【问题标题】:Override @JoinColumn nullable value覆盖 @JoinColumn 可为空的值
【发布时间】:2014-03-04 15:56:03
【问题描述】:

我有很多映射实体,它们都是从抽象类 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 类中显式定义所有属性/getter/setter 之外,还有什么方法可以实现这一点?

非常感谢!

【问题讨论】:

    标签: java hibernate annotations


    【解决方案1】:

    您是否尝试过查看@AssociationOverride

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

    【讨论】:

    • 谢谢@mtpettyp,它就像一个魅力(我一直想说!!)。
    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2022-12-15
    相关资源
    最近更新 更多