私は2つのエンティティperson
とStudent
を持っています。生徒エンティティはpersonを拡張し、独自の識別子studentNumber
を持っています。新しい生徒を作るときは、両方の識別番号を自動生成したいと思う。SINGLE_TABLE継承モデルのperson_idとstudent_idを自動生成
次のスニペットはで失敗:私は新しい学生を作成する場所を学生NULL
@RooEntity(identifierColumn = "personID", inheritanceType = "SINGLE_TABLE")
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.STRING, length = 20)
@DiscriminatorValue("P")
public class Person {
}
いるエンティティ
@RooEntity
@DiscriminatorValue("S")
public class Student extends Person {
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "studentNumber")
private long studentNumber;
}
はここでPERSON_IDと学生数が生成されますが、PERSONIDではないでしょうか?
private Student student;
/**
* @method Create a new student using our persistence model---Not Null variables
*/
public void CreateNewStudent(String firstName, String lastName, String telephone, Date birthday, GenderType gender){
student = new Student();
//set our variables and persist
student.setFirstName(firstName);
student.setLastName(lastName);
student.setTelephone(telephone);
student.setBirthDay(birthday);
student.setGender(gender);
student.persist();
}
}
生徒の作成時にstudentNumberとpersonIDの両方を作成する方法はありますか?
このデザインには質問があります。単一のテーブル継承を使用すると、親テーブルと派生テーブルの両方に主キーがあるのはなぜですか?あなたのスキーマを示してください。 – Perception
学生番号は本当に特定のレコードを識別するためのものではなく、学生の身元を表す数字、人IDが唯一のプライマリキーでなければなりません – Warz
ああ大丈夫です。 – Perception