0

スーパークラスから id (データベース id) フィールドと他の 2 つの変数を継承するアプリのサブクラス エンティティ間の ManyToMany Relationship を構築する際に問題に直面しています。@MappedSuperclassデータベース テーブルのサブクラスのみをマッピングするために使用されます。サブクラスごとに 1 つのテーブルですEntity。最後に、前述の ManyToMany Relationship に基づいて構築された Joined Table を作成したいと思います。

JoinTable注釈の定義がわかりません@AttributeOverride。各サブクラスで、継承された ID をオーバーライドするために使用しようとしました。

ご案内いただけますか?

Personスーパークラス:

@MappedSuperclass
abstract public class Person {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column(name = "id", nullable = false, updatable = false, unique=true)
    private int id;
    @Column(name = "First_Name")
    private String firstName;
    @Column(name = "Last_Name")
    private String lastName;

    //Constructors Goes Here...

    //Getters and Setters Goes Here....
}

Teacherサブクラス:

@Entity
@Table(name="Teacher")
@AttributeOverride(name = "id", column = @Column(name = "tid"))
public class Teacher extends Person {

    @Column(name="Teacher_Id", unique=true) 
    private int teacherId;
    @Column(name="Years_Experience")    
    private double yearsExperience;
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name="Teachers_Students", 
    joinColumns=@JoinColumn(name="tid", referencedColumnName="tid"),
    inverseJoinColumns=@JoinColumn(name="sid", referencedColumnName="sid")) 

    private ArrayList<Student> students = null;

    //Constructors Goes Here...

    //Getters and Setters Goes Here...
}

学生サブクラス:

@Entity
@Table(name="Student")
@AttributeOverride(name = "id", column = @Column(name = "sid"))
public class Student extends Person {

    @Column(name="Student_Id", nullable = false, unique=true)
    private int studentId;
    @Column(name="Year_Average_Grade")
    private double yearAverageGrade; 
    @ManyToMany(mappedBy = "students", cascade = CascadeType.ALL)
    ArrayList<Teacher> teachers= null;

    //Constructors Goes Here...

    //Getters and Setters Goes Here...
}
4

0 に答える 0