java - 从主表实体引用主数据实体的外键列数错误

标签 java mysql hibernate entity

我有一个主数据表。该表的用途只是保存数据(因此与其他表没有关系)。

这是MasterDataEntity

@Id
@Column(name = "TYPE_ID")
private Integer id;

@Id
@Column(name = "DESCRIPTION")
private String description;

在另一个表(功能表)之一中,我想加入该表。喜欢:

这是MainTableEntity:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "TYPE_ID")
private MasterDataEntity masterDataEntity;

这里的逻辑意图是 Maintable 应该包含 MasterTable 的 Type_Id 之一(甚至不是所有行的强制)。

我不想在 MasterTable 中存储有关 MainTable 的任何类型的信息。我想要的只是将主表中的现有值添加到主表中。

除了上述之外,我还执行了以下查询来标记 FK 关系:

ALTER TABLE MAIN_TABLE ADD TYPE_ID NUMBER;

ALTER TABLE MAIN_TABLE ADD FOREIGN KEY (TYPE_ID ) REFERENCES MASTER_TABLE(TYPE_ID );

使用上面的代码我得到错误: 从 MainTableEntity 引用 MasterDataEntity 的外键列数错误。应该是 2。

我尝试查看根本原因,但无法获得任何有用的信息。我是 Hibernate 新手,根据我的要求,我可能会做错误的事情。

有人可以建议这里出了什么问题以及我应该做什么来实现我的意图吗?

谢谢

P.S:我只提到了相关信息。 MainEntity 中显然还有很多其他列,而 MasterEntity 只有 2 列。如果需要任何信息,请告诉我。

最佳答案

可能是因为MasterDataEntity有多个主键,因为iddescription字段有@Id注释,
它应该只有一个用于TYPE_ID:

@Id
@Column(name = "TYPE_ID")
private Integer id;

@Column(name = "DESCRIPTION")
private String description;

关于java - 从主表实体引用主数据实体的外键列数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956156/

相关文章:

java - 将参数传递给 Spring MethodInvokingFactoryBean 参数列表

php - 一次激活多个用户

java - 如何从对象中获取指定字段,检查List是否包含()对象?房间预订验证问题

java - 如何查看 Eclipse 内置插件的特定版本

java - 如何从不同的Consul上下文中获取多个Consul KV?

java - 在开发中为 gae 应用程序抓取数据并将其上传到 prod 还是应该在 prod 中抓取更容易?

MySQL 约束在插入时失败,但在另一台服务器上的相同数据库中工作

mysql - MYSQL组函数使用无效

hibernate - MS SQL Server 2008 R2 IDENTITY 列的 JPA 注释

java - 持久化新实体后,如何使用其父实体的信息填充实体中的字段