java - SuperClass 属性上的 JPA 覆盖注释

标签 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;
 }
}

我的子类在下面:

@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(); 
  }
}

我试图覆盖 'cartName' 列并想在其上添加 @Basic 注释。有可能还是有任何解决方法? TIA

最佳答案

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

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

更新:以下是 JPA 2.1 规范关于覆盖映射父类(super class)中的列的内容:

11.1.4 AttributeOverride Annotation

The AttributeOverride annotation is used to override the mapping of a Basic (whether explicit or default) property or field or Id property or field.

The AttributeOverride annotation may be applied to an entity that extends a mapped superclass or to an embedded field or property to override a Basic mapping or Id mapping defined by the mapped superclass or embeddable class (or embeddable class of one of its attributes).

关于java - SuperClass 属性上的 JPA 覆盖注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332021/

相关文章:

java - 设置不可见后无法访问 Jtable 列数据

java - 我添加数组奇数的方法的逻辑有什么问题

java - 使用hibernate二级缓存进行实体更新

java - 错误 : org. hibernate.exception.GenericJDBCException:无法提取 ResultSet

java - 了解 jpa 锁与事务隔离级别

java - jparepository 错误创建 entitymanagerfactory

java - 在 Java 中放置 SQL 语句的最佳位置

java - 我不明白为什么会出现 JSP 语法错误。 (多重注释)

java - 如何避免使用 Hibernate 自动生成值检查 id

java - Wildfly 数据持久化