java - 覆盖@JoinColumn 可为空的值

标签 java hibernate annotations

我有很多映射实体,它们都是从抽象类 BaseEntityImpl 扩展而来的。

在这个类中,我有 1 个属性 company,注释如下:

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "id_company", nullable = false)
public Company getCompany() {
    return company;
}

只有一个子类(准确地说是 Company),我希望此属性为 NULLEABLE。

但是重写了 setter

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "id_company", nullable = true)
@Override
public Company getCompany() {
    return company;
}

导致我出现这个错误:

原因:org.hibernate.MappingException:在 ar.com.test.entity.Company 中发现公司的重复属性映射

有什么办法,除了不扩展这个类,并在 Company 类中显式定义所有属性/getters/setters 来实现这一点?

非常感谢!

最佳答案

你试过看@AssociationOverride吗? ?

@Entity
@AssociationOverride(name="company",
                     joinColumns=@JoinColumn(name="id_company", nullable=true))
public class Company extends BaseEntityImpl {
   ....
}

关于java - 覆盖@JoinColumn 可为空的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176736/

相关文章:

java - 在自定义注释中使用数组

java - Hibernate用null更新子实体并且不删除,如何强制它?

java - Junit 一次测试中的多个结果

java限制列表项

java - 将下拉选定的值传递给查询字符串 spring hibernate

java - 我可以使用 Java 注释来定义编译时检查吗?

java - 如何在不创建数组的情况下检查重复值?

java - JBoss 5.0.1 : log4j. 属性文件在 EAR 中未生效

java - sqlException : column not found JPA @query

java - Hibernate 不会加载一对多的关系集,即使使用 eager fetch