내가 다음과 유사한 개체 모델을 갖고 있다고 할 수 있습니다. 여기에 설명 된대로 나는, 접근 방식 '클래스 당 가입 표'로 이동합니다 선택한 : http://java.dzone.com/articles/jpa-implementation-patterns-mapping매핑 JPA 엔티티는 상속 계층 구조
그래서 기본적으로 나는 Vehicle
부모 테이블이, SUV
및 Hybrid
테이블 Vehicle
에 외부 키를 갖는. 이 솔루션을 선택한 이유는 정규화 된 스키마가 마음에 들었고 또한 Vehicle.guid
이 전 세계적으로 고유해야하기 때문에 해당 테이블이있는 부모 테이블을 사용하면 개별 테이블 전체에 분산되는 대신 UNIQUE 제약 조건을 단순화 할 수 있습니다.
저는 아직 JPA에 새로운 것이므로 JPA 엔티티로 설정하는 방법을 모릅니다. 클래스 Vehicle
은 MappedSuperclass가 될까요? 또한 각 엔티티에 @Id를 추가해야하지만, SUV
과 Hybrid
은 Vehicle
테이블에 외래 키를 사용합니까, 아니면 하위 테이블의 기본 키를 식별자로 사용해야합니까?
미리 감사드립니다.
귀하의 제안에 따라 나는 Vehicle, SUV 및 Hybrid 모든 Entities를 보유하고 있습니다. 'Vehicle'은 @Id를 가지고 있고,'SUV','Hybrid'는 @Id가 없으며 필요한 @Column 만 있습니다. 내가 그 설치와 함께 SUV를 유지하려고 노력할 때, 나는 그 테이블 차량이 발견되지 않는다는 것을 알리는 오류를 얻었고 그 바로 아래에 Vehicle과 SUV 테이블의 모든 열을 포함하는 테이블 차량에 대한 진술을 준비하는 시도가있다. PU가 계층 구조를 실현하는 것처럼 보이지 않습니다. 어떤 아이디어? – user1491636
SUV 엔티티에서 @PrimaryKeyJoinColumn (name = "VehicleId", referencedColumnName = "VehicleId") 및 Vehicle 엔티티에서 @Inheritance (strategy = InheritanceType.JOINED)가 누락되었습니다. 위의 준비된 stmt 문제가 해결되었지만 여전히 테이블을 찾을 수 없습니다. – user1491636
이상하게도, 내 영속성 유닛에서 테이블 생성 전략을 변경하면 모든 것이 정상적으로 작동합니다. 테이블이 생성 된 곳을 찾을 수 없습니다. 내가 보지 못하는 영속성 단위에 관한 문제 여야합니다. 그러나 최소한 지속성은 작동합니다 :) 감사합니다. – user1491636