Java ElementCollection/MappedSuperclass/AssociationOverride存在问题
我很难推翻一个协会。阅读javadoc您可以阅读“另请参见: ElementCollection,AttributeOverride,AssociationOverride,Column“这让我们假设您可以使用它,但我不知道这是怎么回事Java ElementCollection/MappedSuperclass/AssociationOverride存在问题,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,我很难推翻一个协会。阅读javadoc您可以阅读“另请参见: ElementCollection,AttributeOverride,AssociationOverride,Column“这让我们假设您可以使用它,但我不知道这是怎么回事 @MappedSuperclass public class AbstractUser { [...] public String getLastname() { ...} @ElementCollection @CollectionTable
@MappedSuperclass
public class AbstractUser {
[...]
public String getLastname() { ...}
@ElementCollection
@CollectionTable(joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public Set<String> getNicknames() { ... }
“另请参阅”一节中提到了
@AssociationOverride
,原因如下:
如果可嵌入类包含对其他实体的引用,则可通过AssociationOverride和/或AssociationOverrides注释覆盖与这些引用对应的列的默认值
另一方面,@AssociationOverride
的javadoc表示它只能应用于实体关系,而不能应用于原语集合:
用于覆盖实体关系的映射
因此,您似乎无法使用
@AssociationOverride
,必须在子类中使用不同的注释重写get昵称()
方法。是否可以解决将原语转换为嵌入对象的问题?@fphilip:No,@AssociationOverride
完全不适用于@CollectionTable
。
@Entity
@Table(name="users")
@Table(name="user_rfcs")
@AssociationOverride(name = "nicknames",
joinTable = @JoinTable(name = "user_nicknames", joinColumns = @JoinColumn(name = "user_id"))
)
public class User extends AbstractUser {
[...]
}
@Entity
@Table(name="user_rfcs")
@AssociationOverride(name = "nicknames",
joinTable = @JoinTable(name = "user_rfc_nicknames", joinColumns = @JoinColumn(name = "user_id"))
)
public class UserRFC extends AbstractUser {
[...]
}