我有一个基类person和3个继承自person的类。以下是一些简短的片段:
@Entity
public class Person extends Model{
// ATTRIBUTES
@Id
@Column(columnDefinition = "integer")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(columnDefinition = "varchar(20) not null")
protected String firstName;
@Column(columnDefinition = "varchar(20) not null")
protected String lastName;
@Column(columnDefinition = "varchar(20) not null")
protected String password;
@Column(columnDefinition = "varchar(50) not null")
protected String eMail;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Boss extends Person {
// ATTRIBUTES
@Column(insertable = false, updatable = false)
private String dtype;
@OneToMany(mappedBy = "boss")
private List<Employee> listEmployee;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Employee extends Person {
// ATTRIBUTES
@Column(insertable = false, updatable = false)
private String dtype;
@Column(columnDefinition = "Varchar(20)")
private String position;
@ManyToOne
private Boss boss;
现在我想存储一个员工,一个老板,然后再存储一个员工:
Employee e1 = new Employee(...);
Person p1 = new Person(e1);
Boss b = new Boss(...);
Person p2 = new Person(b);
Employee e2 = new Employee(...);
Person p3 = new Person(e2);
e1.save();
p1.save();
b.save();
p2.save();
e2.save();
p3.save();
这将在id为1和2的employee中生成2个条目,在id为1的boss中生成1个条目,在id为1、2和3的person中生成3个条目。e1的员工id为1,本人id为1,老板id为1,本人id为2,e2的员工id为2,本人id为3。
有没有可能在我的程序中不使用全局计数器而在employee和person中插入一个id相同的雇员?
谢谢您
派崔克
1条答案
按热度按时间6uxekuva1#
您不需要创建和持久化person示例—实际上person应该是一个抽象类。给定正确的Map(您目前没有),您只需要以下内容:
在Map中删除
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
窗体boss和employee并将其添加到person类。此外,您不需要为每个类的表\u设置一个discrimator,因此您可以从老板和员工中删除以下内容: