SuperClass 属性上的 JPA 覆盖注释

pij*_*cse 4 java hibernate jpa

我在 SuperClass 中定义了我的属性,并且我想在 SuperClass 属性之一上再应用一个注释。

@MappedSuperclass
public class CartBaseEntity {
private String cartName;

@Column(name = "cart_name")
public String getCartName() {
    return cartName;
 }

public void setCartName(String cartName) {
    this.cartName = cartName;
 }
}
Run Code Online (Sandbox Code Playgroud)

我的子类在下面:

@Entity
@Table(name = "CART2")
public class CartEntity extends CartBaseEntity implements Serializable {

private Set<Items> items;

@Basic(fetch = FetchType.LAZY)
@Override
public String getCartName() {
    return super.getCartName(); 
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图重写“cartName”列,要添加@Basic上批注。是否有可能或有任何解决方法?TIA

wyp*_*prz 8

是的,可以将@AttributeOverride注释应用于子类:

@Entity
@Table(name = "CART2")
@AttributeOverride(name = "cartName", column = @Column(name="CART_NAME"))
public class CartEntity extends CartBaseEntity implements Serializable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

更新:这是 JPA 2.1 规范关于覆盖映射超类中的列的内容:

11.1.4 AttributeOverride 注解

AttributeOverride注释被用于重写的映射Basic(明确或默认值)的属性或字段或Id 属性或字段。

所述AttributeOverride注释可以应用于延伸映射超或到嵌入式字段或属性覆盖的实体Basic映射或Id通过映射超或嵌入的类(或类嵌入其属性之一的)所定义的映射。