2012-10-17 218 views
0

我想實現嵌套記做嵌入式的元素已經有嵌入式元素:嵌入式,嵌入式

@Embeddable 
public class A implements Serializable { 

private int a; 
private int b; 
} 

@Embeddable 
public class B implements Serializable { 

@Embedded 
protected A sum; 
@Embedded 
protected A value; 

... }

@Entity 
public class C implements Serializable{ 
@Embedded 
@AttributeOverrides({ 
    @AttributeOverride(name = "sum.a", column = 
    @Column(name = "SUM_COL_A", precision = 12, scale = 2, nullable = false)), 
    @AttributeOverride(name = "sum.b", column = 
    @Column(name = "SUM_COL_B", precision = 12, scale = 2, nullable = false)), 
    @AttributeOverride(name = "value.a", column = 
    @Column(name = "VALUE_COL_A", precision = 12, scale = 2, nullable = false)), 
    @AttributeOverride(name = "value.b", column = 
    @Column(name = "VALUE_COL_B", precision = 12, scale = 2, nullable = false)) 
private B property; 
}) 
} 

執行後,我有兩個列上創建(VALUE_COL_A和VALUE_COL_B),前兩列根本不存在。

我錯過了什麼? 謝謝

回答

1

您的代碼看起來正確。這可能是您的持久性提供程序中的一個錯誤。檢查您是否正在使用最新版本/補丁或記錄錯誤。

0

我的理解是B屬性是序列化的,並且沒有子嵌入對象。所以應該只有一列,其中包含B的所有內容。您將無法搜索嵌入式B對象的任何屬性,僅供參考。