ここには、IdClassの詳細を省略した縮小スニペットがあります。私が午前問題は、テーブル定義がある次のとおりです。JPA2 JoinColumns JoinColumn名が尊重されていません。 (Hibernate 3.6とH2)
ClientPersonalityModel
(
client_id int not null,
personality_trait_id int not null,
personality_type_id int not null,
primary key (client_id, personality_trait_id, personality_type_id)
)
とクラスは次のとおりです。
@Entity
public class ClientPersonalityModel
{
@Id
@ManyToOne
@JoinColumn(name="client_id")
protected ClientModel client;
@Id
@ManyToOne
@JoinColumns({
@JoinColumn(name="personality_trait_id",referencedColumnName="id"),
@JoinColumn(name="personality_type_id",referencedColumnName="personality_type_id")
})
protected ClientPersonalityTraitModel trait;
}
しかし、永続化フレームワークには、列CLIENT_ID、TRAIT_ID、TRAIT_PERSONALITY_TYPE_IDを使用しようとしています。
なぜ@JoinColumn名は無視されますか?
初期のSessionFactory creationfailed.org.hibernate.MappingException:
java.lang.ExceptionInInitializerError テーブルclient_personalitiesにpersonality_type_id物理名から論理列名を見つけることができませんによって引き起こさ:ORG
それは例外をスローします.hibernate.MappingException:テーブルclient_personalitiesの物理名personality_type_idから論理カラム名を見つけることができません。
このケースは、多くの例で説明されていますが、カラム名をオーバーライドしません。
例:
リスト10-12。プロJPA 2(ISBNコード978-1-4302-1956-9/978-1-4302-1957-6)から従属識別子
@Entity
@IdClass(ProjectId.class)
public class Project {
@Id private String name;
@Id
@ManyToOne
private Department dept;
// ...
}
とプロジェクト
手元にはもっと根本的な問題があるようです。https://hibernate.onjira.com/browse/HHH-6754 –