我有一个主数据表。该表的用途只是保存数据(因此与其他表没有关系)。
这是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
有多个主键,因为id
和description
字段有@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/