我有一个主数据表。此表的用途是仅保存数据(因此它与其他表没有关系)。
这是masterdataentity
@Id
@Column(name = "TYPE_ID")
private Integer id;
@Id
@Column(name = "DESCRIPTION")
private String description;
在另一个表(函数表)中,我想连接这个表。比如:
这是主表实体:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "TYPE_ID")
private MasterDataEntity masterDataEntity;
这里的逻辑意图是maintable应该包含主表的类型\id之一(甚至不是所有行都必须包含)。
我不想在主表的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。
我试图寻找根本原因,但没有得到任何有用的信息。我刚开始冬眠,根据我的要求,我可能会做错事。
有人能告诉我这里出了什么问题,我应该做些什么来达到我的目的吗?
谢谢
p、 s:我只提到了相关信息。很明显,maintentity中还有许多其他列,而masterentity只有2列。如果需要任何信息,请告诉我。
1条答案
按热度按时间kxeu7u2r1#
可能是因为
MasterDataEntity
有多个主键,因为id
以及description
田地有@Id
注解,它应该只有一个
TYPE_ID
: