私は2つのテーブルprimary_tableとsecondary_tableを持っています。要するにJPA/Hibernate @SecondaryTable @PrimaryKeyJoinCloumnプライマリテーブルの非プライマリカラムを参照します
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)
)
:次のように
@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
}
テーブルである:二列の第一列は、非プライマリカラムを参照し、以下のように
Hibernateのエンティティが定義されていますプライマリテーブルしかし
、アプリを起動、休止状態は文句:
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]
私は実際には主キーが主キーを参照してみましょう、と休止満たされている、主テーブルのprimary_idにreferencedColumnNameとを変更しました。しかし、私は従来のデータベースで作業しており、スキーマを変更することはできません。
私のコードで何が問題になっていますか?
多くの感謝!