2017-12-22 17 views
0

特定の生徒についてコースの詳細を取得したいと思います。どのように私は休止状態でこれを行うことができますか?生徒のためのコースリストを取得する

休止状態でお手伝いしてください。

@Entity 
public class Course implements Serializable { 

    private long id; 
    private String name; 

    @Id 
    @GeneratedValue 
    public long getId() { 
     return id; 
    } 

    public String getName() { 
     return name; 
    } 

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "Enrollment", joinColumns = { 
     @JoinColumn(name = "Course_Id", insertable = false, updatable = false, nullable = false)}, inverseJoinColumns = { 
     @JoinColumn(name = "Student_Id", insertable = false, nullable = false, updatable = false)}) 
    private List<Student> students = new ArrayList<Student>(); 

} 


@Entity 
public class Student implements Serializable { 

    private long id; 
    private String name; 

    @Id 
    @GeneratedValue 
    public long getId() { 
     return id; 
    } 

} 

学生向けのコースの詳細を検索してください。

+0

何を試しましたか?フェッチを試みるコードを投稿した場合は、そこから選択して助けてください – Zeromus

答えて

0

複数のコースは、単一の学生のためにそこにいる場合は、データベースの構造は次のようにする必要があります:あなたのコースEntityクラスは、任意のが直面している場合は、このプロパティをtrueに入れ

@Entity 
@Table(name="Courses") 
public class Courses { 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name="COURSE_ID") 
private long id; 


@Column(name="COURSE_NAME") 
private String name; 


@ManyToOne 
@JoinColumn(name="Student_ID") // Foreign Key 
private Student student; 

} 

ようにする必要があり

@Entity 
@Table(name="Student") 
public class Student implements Serializable { 


private static final long serialVersionUID = 1L; 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name="ID") 
private long id; 


@Column(name="NAME") 
private String name; 


@OneToMany(mappedBy="student",fetch = FetchType.EAGER) // change to FetchType.Lazy for lazy initialization 
private List<Courses> courses; 

// Getters and setters 
} 

怠惰な初期化の問題 "hibernate.enable_lazy_load_no_trans"