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

这是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具有多个主键,因为iddescription字段具有@Id注释,
它应该只有一个用于TYPE_ID的对象:

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

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

09-26 06:27