2012-10-17 56 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对象的任何属性,仅供参考。