Tôi có một đối tượng với một trường có thể là một số loại đối tượng. Đối tượng này được mã hóa trong một bảng đơn với cột phân biệt đối xử cho các kiểu con của trường. Mỗi loại phụ này có các trường được ánh xạ tới một cột trong bảng đối tượng cha. Tôi không thể có vẻ để mô hình này trong hibernate. Mã dưới đây sẽ trả lại giá trị rỗng cho getSubfield()
bất kể dữ liệu loại phụ nằm trong bảng.Hibernate Embeddable Inheritance
Schema
id type whosit whatsit +----+------+--------+---------+ | 1 | "A" | "test" | null | | 2 | "B" | null | "test" | +----+------+--------+---------+
miền Objects
@Entity
public class Parent {
protected @Id @GeneratedValue int id;
protected Subfield subfield;
public Subfield getSubfield() {return subfield;}
}
@Embeddable
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public abstract class Subfield {}
@DiscriminatorValue("A")
public class TypeA extends Subfield {
public String whosit;
}
@DiscriminatorValue("B")
public class TypeB extends Subfield {
public String whatsit;
}
"SELECT p TỪ mẹ p"
{id=1,subfield=null}
{id=2,subfield=null}
Có possib Để hoàn thành những gì tôi muốn với mô hình đối tượng này hoặc tôi cần phải sáng tạo hơn một chút (đây là cơ sở dữ liệu kế thừa, thay đổi giản đồ không được ưu tiên)
Một đồng nghiệp tại nơi làm việc đã chỉ cho tôi http://opensource.atlassian.com/projects/hibernate/browse/HHH-1910. Tôi đoán nó không được hỗ trợ = \ –