0

我想实现嵌套一个标记为 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),前两列根本不存在。

我错过了什么?谢谢

4

2 回答 2

1

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

于 2012-10-17T14:10:36.627 回答
0

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

于 2012-10-17T14:15:31.720 回答