我想实现嵌套一个标记为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),前两列根本不存在。
我错过了什么? 谢谢
答案 0 :(得分:1)
您的代码看起来是正确的。它可能是您的持久性提供程序中的错误。检查您是否使用最新版本/补丁,或记录错误。
答案 1 :(得分:0)
我的理解是B属性是序列化的,没有子嵌入对象。所以应该只有一个列,其中包含B的所有内容。您将无法搜索嵌入式B对象的任何属性,仅限FYI。