gpt4 book ai didi

java - ElementCollection/MappedSuperclass/AssociationOverride 的问题

转载 作者:行者123 更新时间:2023-11-30 11:55:16 25 4
gpt4 key购买 nike

我无法覆盖关联。阅读 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 {
[...]
}

最佳答案

@AssociationOverride 由于以下原因在“另见”部分中提到:

If the embeddable class contains references to other entities, the default values for the columns corresponding to those references may be overridden by means of the AssociationOverride and/or AssociationOverrides annotations.

从另一方面来看,@AssociationOverride 的 javadoc 说它只能应用于实体关系,而不是基元集合:

Used to override a mapping for an entity relationship

所以,看起来你不能用 @AssociationOverride 来完成它,你必须在子类中用不同的注释覆盖 getNicknames() 方法。

关于java - ElementCollection/MappedSuperclass/AssociationOverride 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com