我有两个实体,其中一个是从另一个实体派生出来的
@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;
}当投标人对象被持久化时,在用户表和投标人表中都会创建一个具有相同id值的记录。
最初对每个系统用户-我们创建用户实体,但一段时间后,用户需要“升级”到投标人。
有没有一种方法,我可以“升级”用户,以某种优雅的方式投标人?
我有几个主意-
以上所有的想法看起来都不是完美的解决方案。
发布于 2016-12-27 20:35:51
如果您不想拥有两个表,可以使用InheritanceType.SINGLE_TABLE和@disciminatorValue。通过这种方式,要更改用户的类型,只需更改判别器值即可。
您将找到“单表策略”到本页的一个示例。
这种方式似乎是最简单的,但它可能不是最好的。
https://stackoverflow.com/questions/41350138
复制相似问题