我试图覆盖实体超类中存在的嵌入式列的属性。
我的实体看起来像这样:
@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注释移到嵌入式字段上会起作用,但是我不能修改超类。
有什么解决办法吗?
答案 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
}