嵌入式,嵌入式

时间:2012-10-17 11:38:14

标签: java-ee jpa

我想实现嵌套一个标记为Embeddable的元素,该元素已经嵌入了元素:

@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),前两列根本不存在。

我错过了什么? 谢谢

2 个答案:

答案 0 :(得分:1)

您的代码看起来是正确的。它可能是您的持久性提供程序中的错误。检查您是否使用最新版本/补丁,或记录错误。

答案 1 :(得分:0)

我的理解是B属性是序列化的,没有子嵌入对象。所以应该只有一个列,其中包含B的所有内容。您将无法搜索嵌入式B对象的任何属性,仅限FYI。

相关问题