9

这是我抽象的父亲:

@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注释?

4

2 回答 2

11

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

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

}
于 2012-10-23T10:01:16.183 回答
1

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

于 2012-10-23T09:18:29.273 回答