java - hibernate : How override an attribute from mapped super class

标签 java hibernate annotations overriding mappedsuperclass

通用实体,父类(super class):

@MappedSuperclass
public abstract class GenericEntity {
    private Integer id;
    public Integer getId() {return id;}
    public void setId(Integer id) {this.id = id;}
}

POJO:

@Entity
@Table(name = "POJO_ONE")
@SequenceGenerator(name = "HB_SEQ_POJO_ONE", sequenceName = "SEQ_POJO_ONE", allocationSize = 1)
public class PojoOne extends GenericEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HB_SEQ_POJO_ONE")
    @Column(name = "ID")
    @AttributeOverride(name = "id", column = @Column(name = "ID"))
    private Integer id;

    @Override
    public Integer getId() {return id;}
}

我尝试使用这些注解:@AttributeOverride、@Id、...但它不起作用。你能帮助我吗? 我想覆盖属性“id”以通过 pojo/table 指定另一个列名和序列。 最好的方法是什么?

最佳答案

试试这个,而不是

@MappedSuperclass
public abstract class GenericEntity {
    protected Integer id;
    ...

    public Integer getId() {return id;}
    public void setId(Integer id) {this.id = id;}
}


@Entity
@Table(name = "POJO_ONE")
@SequenceGenerator(name = "HB_SEQ_POJO_ONE", sequenceName = "SEQ_POJO_ONE", allocationSize = 1)
@AttributeOverride(name = "id", column = @Column(name = "ID"))
public class PojoOne extends GenericEntity {
    // we should not define id here again
    ...

    @Override
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HB_SEQ_POJO_ONE")
    public Integer getId() {return id;}
}

关于java - hibernate : How override an attribute from mapped super class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257921/

相关文章:

spring - 在 Spring Boot MVC 中添加 ShallowEtagHeaderFilter

java - 初始化未初始化的实例变量时到底发生了什么?

java - 如何使用我的 ID 保存实体

java - 以特定形状显示数字

Java Spring&Hibernate : Photos in Blog Posts

java - hibernate 事务开始/回滚/提交与 session.clear()

java - 如何使用 java/kotlin 中的注释处理将方法附加到现有类?

java - 这个创建新对象的 REST 方法到底是如何工作的?

java - 是什么原因导致 jetty 空闲超时

java - 检查一个点是否在指定的矩形内