我有一个主数据表。该表的用途是仅保存数据(因此它与其他表没有关系)。
这是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列。让我知道是否需要任何信息。
答案 0 :(得分:0)
可能是由于MasterDataEntity
具有多个主键,因为id
和description
字段具有@Id
注释,
它应该只包含一个TYPE_ID
:
@Id
@Column(name = "TYPE_ID")
private Integer id;
@Column(name = "DESCRIPTION")
private String description;