如何从嵌入式列覆盖属性是超类

时间:2018-07-06 07:49:14

标签: java hibernate

我试图覆盖实体超类中存在的嵌入式列的属性。

我的实体看起来像这样:

@Embeddable
public class Key {
    @Column
    private String a,

    @Column
    private String b
}

@MappedSuperclass
public abstract class Superclass {

    @EmbeddedId
    private Key key;
}

@Entity
@Table(name = "my_entity")
@AttributeOverride(name = "b", column = @Column(name="renamed_b"))
public class MyEntity extends Superclass {

}

我尝试在MyEntity上使用AttributeOverride,但是它什么也没做。

如果我将AttributeOverride注释移到嵌入式字段上会起作用,但是我不能修改超类。

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

请仔细阅读文档:

  

要覆盖多个嵌入级别的映射,请使用点(“。”)。   在name元素中必须使用符号形式来表示   嵌入属性中的属性。

名称"b"不正确。 您应该使用"key.b"

@Entity
@Table(name = "my_entity")
@AttributeOverride(name = "key.b", column = @Column(name="renamed_b"))
public class MyEntity extends Superclass 
}