5

私はPerson2つのサブクラス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 で保存しようとすると、休止状態で主キーの重複例外がスローされます

org.hibernate.exception.ConstraintViolationException: Duplicate entry '142.855.267-71' for key 'PRIMARY'

hibernate はデータベースに新しい人を挿入しようとしていますが、私はそれを望んでいません。

人がデータベースに既に存在することを休止状態に認識させ、その人への参照を保存する方法はありますか?

ところで:学生と従業員を手動で挿入すると、すべてが魅力的に機能します。

4

1 に答える 1

0

テーブルと列のマッピングを指定する必要があります。以下は、サブクラス マッピングごとの表です。

@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 {
}
于 2013-11-09T18:53:50.887 に答える