다음은 IdClass 세부 사항을 생략 한 축소 된 스 니펫입니다. 오전 데 문제는 테이블 정의는 다음과 같습니다JPA2 JoinColumns JoinColumn 이름을 준수하지 않습니다. (Hibernate 3.6 and 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 실제 이름에서 논리적 열 이름을 찾을 수 없습니다에 의해 발생 : 조직
그것은 예외가 발생합니다 .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 –