通用实体,父类(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/