0

我有一个从BaseEntity扩展的UserAuthenticationEntity

@MappedSuperclass
public class BaseEntity implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_seq_generator")
  @SequenceGenerator(name = "user_seq_generator", sequenceName = "user_seq", allocationSize = 1)
  private Long id;

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }
}

@Entity
@Table(name = "user_authentication")
public class UserAuthenticationEntity extends BaseEntity {

  private String username;
  private String password;

  public UserAuthenticationEntity(String username, String password){
    this.username = username;
    this.password = password;
  }
  ...
  ...

}

所有未来的实体都将扩展 BaseEntity类。

是否有可能所有实体都从BaseEntity类继承id属性但具有单独的序列来生成主键?

我知道这是一个有线场景,但我认为拥有一个基实体类是为所有实体类定义id属性的好地方,但不能使用不同的序列是一种交易破坏者。不确定是否可以完成。

也欢迎实体类的任何替代/更好的设计。

4

1 回答 1

0

我认为,将继承与实体 id 一起使用是一个坏主意。

通常,每个实体都包含一个带有@Id 和@GeneratedValue 注释的id attrite,并且继承用于继承公共属性。但是,如果您想尝试一下,可以查看以下问题:

使用 JPA 覆盖在 @MappedSuperclass 中定义的 @Id

于 2019-07-28T20:07:19.430 回答