0
我有两个表primary_table和secondary_table。JPA/Hibernate @SecondaryTable @PrimaryKeyJoinCloumn引用主表中的非主列
的休眠实体定义如下:
@Entity
@Table(name = "primary_table")
@SecondaryTable(name = "secondary_table", pkJoinColumns =
@PrimaryKeyJoinColumn(name="secondary_id", referencedColumnName="secondary_id"))
public class Primary{
...
@Id
@Column(name = "primary_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long primaryId;
... columns in the primary table
... columns in the secondary table
}
的表格如下所示:
CREATE TABLE primary_table
(
primary_id INTEGER NOT NULL,
secondary_id INTEGER NOT NULL,
PRIMARY KEY(primary_id)
)
CREATE TABLE secondary_table
(
secondary_id INTEGER NOT NULL,
PRIMARY KEY(secondary_id)
)
简而言之:次级柱的主列中引用的一个非主柱主表。
然而,在启动应用程序时,休眠抱怨:
Caused by: org.hibernate.MappingException: Unable to find column with logical name: secondary_id in org.hibernate.mapping.Table(primary_table) and its related supertables and secondary tables
at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:828) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final]
我已经改变了referencedColumnName主表的primary_id,实际上是让PrimaryKey的引用的PrimaryKey和Hibernate是满意的。但是,我正在使用旧数据库,并且无法更改模式。
我的代码有什么问题?
非常感谢!