Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ElementCollection/MappedSuperclass/AssociationOverride存在问题_Java_Hibernate_Jpa 2.0 - Fatal编程技术网

Java ElementCollection/MappedSuperclass/AssociationOverride存在问题

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

我很难推翻一个协会。阅读javadoc您可以阅读“另请参见: 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() { ... } 

“另请参阅”一节中提到了
@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  {
       [...]
}