Java Hibernate继承,多态保存
我有一个类Java Hibernate继承,多态保存,java,sql,hibernate,inheritance,Java,Sql,Hibernate,Inheritance,我有一个类Person,有两个子类Student和Employee @Entity(name="person") @Inheritance(strategy = InheritanceType.JOINED) public class Person implements Serializable { @Id @GeneratedValue private Integer id; } @Entity(name="student") @PrimaryKeyJoinColum
Person
,有两个子类Student
和Employee
@Entity(name="person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person implements Serializable {
@Id
@GeneratedValue
private Integer id;
}
@Entity(name="student")
@PrimaryKeyJoinColumn(name="id")
public class Student extends Pessoa implements Serializable {
}
@Entity(name="employee")
@PrimaryKeyJoinColumn(name="id")
public class Employee extends Person implements Serializable {
}
学生也可以是员工,但当我尝试使用与员工相同的id保存学生时,hibernate会抛出一个重复的主键异常
org.hibernate.exception.ConstraintViolationException: Duplicate entry '142.855.267-71' for key 'PRIMARY'
hibernate正在尝试在数据库中插入一个新的用户,我不希望这样
有没有一种方法可以让hibernate识别数据库中已经存在一个人,并只保存对此人的引用?
顺便说一句:当我手动插入一名学生和一名员工时,一切都像一个符咒一样工作。您需要指定表和列映射。下表为每个子类的映射
@Entity(name="person")
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person implements Serializable {
@Id
@GeneratedValue
@Column(name = "ID")
private Integer id;
}
@Entity(name="student")
@Table(name="STUDENT")
@PrimaryKeyJoinColumn(name="id")
public class Student extends Pessoa implements Serializable {
}
@Entity(name="employee")
@Table(name="EMPLOYEE")
@PrimaryKeyJoinColumn(name="id")
public class Employee extends Person implements Serializable {
}
感谢您的回复,但它仍然会抛出相同的错误