【发布时间】:2018-05-14 00:56:48
【问题描述】:
JPA 中的@Id 存在如下描述的问题? 有如下泛型类吗?
@MappedSuperclass
public abstract class BaseEntity<T> implements Serializable {
private static final long serialVersionUID = 4295229462159851306L;
private T id;
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}
}
还有另一个类是从它扩展而来的吗?
@Entity
@Table(name = "DOC_CHANGE_CODE" )
public class ChangeCode extends BaseEntity<Long> {
@Id
@GeneratedValue(generator = "sequence_db", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "sequence_db", sequenceName = "SEQ_DOC_CHANGE_CODE", allocationSize = 1)
public Long getId () {
return super.getId();
}
}
因为任何子类都有自己的序列,我必须指定任何子类@Id,因为我覆盖了它的getter,并在上面放了一些注释。不幸的是,它不能正常工作。 如何解决问题并实现目标?
【问题讨论】:
-
“很遗憾它不能正常工作”你能说得更具体些吗?
-
正如我所解释的,任何表都有自己的顺序。我想将这些序列分配给它的表而不是@Generator。
-
尝试使用
return this.getId()而不是return super.getId() -
super.getId() 和 this.getId() 有什么区别?
标签: java hibernate jpa annotations