我有以下问题
我将'@Id'注释字段作为我'@MappedSuperClass'的一部分,我让所有实体都扩展了MappedSuperClass.Now,如果必须,我如何覆盖超类'id'为我的实体定义一个复合主键... ie。如何让我的实体使用注释为@EmbeddedId的复合主键而不是从MappedSuperClass继承的@Id注释字段?我的实体中的@EmbeddedId注释会自动覆盖超类的@Id吗?
我已经将一些字段(我的架构中的大多数实体共享)作为MappedSuperClass的一部分。现在,如果很少有实体不需要它们,我该如何避免将这些字段添加为列?
感谢。
答案 0 :(得分:1)
[...]如何让我的实体使用注释为@EmbeddedId的复合主键而不是从MappedSuperClass继承的@Id注释字段?我的实体中的@EmbeddedId注释会自动覆盖超类的@Id吗?
AFAIK,你做不到。因此,在这种情况下不要从您的实体超类继承,请使用另一个实体超类。
我已经将一些字段(我的架构中的大多数实体共享)作为MappedSuperClass的一部分。现在,如果很少有实体不需要这些字段,我该如何避免将这些字段添加为列?
那么,再次,不要从包含这些字段的实体超类继承并使用另一个实体超类。
答案 1 :(得分:0)
JPA提供attribute-override
来覆盖嵌入或映射的超类字段的映射。
对于Annotations,您可以在java类中使用@AttributeOverride
注释。
对于多个属性,您可以使用@AttributeOverrides
注释,其中包含@AttributeOverride
注释的数组。