0
다음 엔티티를 고려하십시오. Child 클래스가 두 개의 파생 된 음식 클래스 (Local Food 또는 Foreign) 중 하나를 참조하도록하려고합니다. 이것은 고의적 인 예입니다. 실제 도메인 객체는 매우 복잡하므로 FoodType 열을 결합하고 사용하는 것은 옵션이 아닙니다. 두 Food 하위 클래스는 거의 특성이 비슷하지 않기 때문입니다.기본 클래스에 대한 Hibernate/JPA 매핑
@MappedSuperclass
public abstract class Food {
}
@Entity
public class LocalFood extends Food {
private long id;
private String name;
}
@Entity
public class ForeignFood extends Food {
private long id;
private String name;
}
@Entity
public class Child {
private Food food; //Base Class needed here
@ManyToOne()
public Food getFood() {
return food;
}
}
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.sample.Child.food references an unknown entity: com.sample.Food
상속 및 판별 자도 사용하지 않습니다.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Food {
private long id; // set , get (Auto gen)
}
이런 종류의 매핑을 사용할 수 있습니까?
상속 전략을 사용하여 Food 클래스를 엔터티로 매핑해야합니다. 그렇게 할 때 예외는 무엇입니까? –
나는'Caused by : java.lang.ClassCastException : org.hibernate.mapping.SingleTableSubclass 에 의해 발생했다 : java.lang.ClassCastException : org.hibernate.mapping.JoinedSubclass'. 각 상속 유형에 대해. – lawal
이것은 매핑 문제로 인해 발생합니다. 예를 들어 https://forum.hibernate.org/viewtopic.php?f=1&t=1005287을 참조하십시오. 이 ID는 루트 클래스 (Food)에 선언되어야합니다. 모든 하위 클래스에있는 것은 아닙니다. –