如何覆盖hibernate集合连接列?

时间:2012-10-23 09:07:23

标签: java hibernate

这是我抽象的父亲:

@MappedSuperclass   
public abstract class AbstractEntity implements Serializable {

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "entity_no", referencedColumnName = "MY_COLUMN")
    private Set<CLASS_TYPE> list; 
}

我的所有实体都有此集,但每个实体都有不同的referencedColumnName

有没有办法只覆盖@JoinColumn注释?

2 个答案:

答案 0 :(得分:8)

您可以使用AssociationOverride注释。在你的情况下,它看起来像这样:

@Entity
@AssociationOverrides({
   @AssociationOverride(name = "list",
      joinColumns = @JoinColumn(referencedColumnName = "COLUMN_NEW_NAME"))
})
public class ConcreteEntity extends AbstractEntity {

}

答案 1 :(得分:0)

如果您在属性(即getter)上而不是在字段上定义注释,则可以覆盖每个子类中的public Set<CLASS_TYPE> getList()并单独定义@JoinColumn