我有一个主数据表。该表的用途是仅保存数据(因此,它与其他表没有关系)。
这是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的新手,根据我的要求,我可能做错了事情。
有人可以建议这里有什么问题吗,我应该怎么做才能实现自己的意图?
谢谢
附注:我只提到了相关信息。显然,MainEntity中还有许多其他列,而MasterEntity只有2列。让我知道是否需要任何信息。
最佳答案
可能是由于MasterDataEntity
具有多个主键,因为id
和description
字段具有@Id
注释,
它应该只有一个用于TYPE_ID
的对象:
@Id
@Column(name = "TYPE_ID")
private Integer id;
@Column(name = "DESCRIPTION")
private String description;