您可以“强制解决”此强制派生类以实现方法,该方法将确保分配ID并使用@PrePersist对该方法进行注释。您可以为将为其自动生成ID的类提供默认实现。
Somethig喜欢:
@MappedSuperclasspublic abstract class baseEntity<T> implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected T id; @PrePersist public void ensureIdAssigned() { ensureIdAssignedInternal(); } public abstract void ensureIdAssignedInternal(); }@MappedSuperclasspublic abstract class AutoIdMaintaintedEntity<T> extends MaintainedEntity<T> { // provide default implementation for Entities with Id generated by @GeneratedValue(strategy=GenerationType.IDENTITY) on baseEntity superclass public void ensureIdAssignedInternal() { // nothing here since the Id will be automatically assigned }}@Entitypublic class Table1 extends AutoIdMaintaintedEntity<Long> { @Column private String value;}@Entitypublic class Table2 extends baseEntity<String> { @Column private String shortDescription; @Column private String longDescription; public void ensureIdAssignedInternal() { this.id = generateMyTextId(); } private String generateMyTextId() { return "text id"; }}


