我有覆盖关联的麻烦。阅读javadoc http://download.oracle.com/javaee/6/api/javax/persistence/CollectionTable.html你可以阅读“另请参阅: ElementCollection,AttributeOverride,AssociationOverride,Column“这给我们假设你可以使用它......但我不知道这是怎么回事
@MappedSuperclass
public class AbstractUser {
[...]
public String getLastname() { ...}
@ElementCollection
@CollectionTable(joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public Set<String> getNicknames() { ... }
实施
@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 {
[...]
}
答案 0 :(得分:1)
@AssociationOverride
在“另请参阅”部分中提及,原因如下:
如果embeddable类包含对其他实体的引用,则可以通过AssociationOverride和/或AssociationOverrides注释覆盖与这些引用对应的列的默认值。
另一方面,@AssociationOverride
的javadoc说它只能应用于实体关系,而不是基元集合:
用于覆盖实体关系的映射
因此,您似乎无法使用@AssociationOverride
执行此操作,并且您必须在子类中使用不同的注释覆盖getNicknames()
方法。