我有2个实体,其中一个来自另一个
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String login;
@Column(name = "password_hash",length = 60)
private String password;
}
和
@Entity
@Table(name = "bidder")
public class Bidder extends User {
@Column(length = 100, unique = true)
private String email;
}
当Bidder对象被持久化时,在用户和出价人表中都创建了一个具有相同id值的记录。
最初为每个系统用户 - 我们创建用户实体,但过了一段时间后,用户需要“升级”到Bidder。
有没有办法以优雅的方式“升级”用户到投标人?
我有几点想法 -
所有上述想法看起来都不是完美的解决方案。
答案 0 :(得分:1)
如果您真的不想拥有2个牌桌,可以使用InheritanceType.SINGLE_TABLE
和@disciminatorValue
。
通过这种方式,要更改用户的类型,您只需更改鉴别器值。
您将找到"单表策略的示例" to this page
这种方式似乎最简单,但可能不是最好的。