注釈を使用している休止状態マッピングを学習しています。私は1つのセクションを完了しました。私。親テーブルを保存すると自動的に子クラスを挿入できます。 see_that。ロールのコレクションを遅延して初期化できませんでした:com.pojo.Student.phonenos、セッションもセッションも閉じられていません
しかし、私はマスターテーブルをフェッチしているときに子テーブルを取得しませんでした。エラーを取得する
failed to lazily initialize a collection of role: com.pojo.one2many.unidirectional.Student.phonenos, no session or session was closed
ここにあなたのレビューを掲載するコードが追加されました。それを通過してください。そして、私に大きなアドバイスをください。 Student.java。 プットアウト(親クラス)
@Entity
@Table(name="STUDENT")
public class Student {
private int studentid;
private String studentName;
private Set <Phone> phonenos;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="studenId")
public int getStudentid() {
return studentid;
}
public void setStudentid(int studentid) {
this.studentid = studentid;
}
@Column(name="studenName")
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name="studenId")
public Set<Phone> getPhonenos() {
return phonenos;
}
public void setPhonenos(Set<Phone> phonenos) {
this.phonenos = phonenos;
}
Phone.java(子クラス)
@Entity
@Table(name = "PHONE")
public class Phone {
private int phoneid;
private String phoneNo;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "phoneId")
public int getPhoneid() {
return phoneid;
}
public void setPhoneid(int phoneid) {
this.phoneid = phoneid;
}
@Column(name = "phoneno")
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
私のDAOクラス
public List<Student> getAllStudent() {
List<Student> studentList = null;
try {
DetachedCriteria criteria = DetachedCriteria.forClass(Student.class);
studentList = (List<Student>)getHibernateTemplate().findByCriteria(criteria);
if(studentList != null && ! studentList.isEmpty()){
for(Student st :studentList){
System.out.println(" st name : "+st.getStudentName());
if(st.getPhonenos() != null && ! st.getPhonenos().isEmpty()){
for(Phone ph : st.getPhonenos()){
System.out.println(" ph no : "+ ph.getPhoneNo());
}
}else{
System.out.println(" phone number is null");
}
}
}else{
System.out.println(" student null");
}
} catch (DataAccessException e) {
e.printStackTrace();
}
return studentList;
}
ここで私は一方向の使用しています
failed to lazily initialize a collection of role: com.pojo.one2many.unidirectional.Student.phonenos, no session or session was closed
です(外部キー)1対多マッピング(jではなくオイントテーブル、双方向)。
熱心とフェッチ怠惰である私たちはその逆
2、親テーブルをフェッチするとき、子テーブルを取得するにはどのように私の質問
1))Summerizing。
3)1対多マッピングの場合、単方向性、双方向性、および結合テーブルのうち、電力がいっぱいであるもの。あなたはこれらのクラスの任意のエンティティが取得され、このたびを行うには本当にしたい場合は
コードの一部が動作していません... getHibernateTemplate()。execute(新しいHibernateCallback()コンパイルエラーです。 – jaleel
Tnx。あなたはリプレイのために解決策を期待しています。 – jaleel
DAOまたはそのメソッドに '@ Transactional'を注釈付けしてみましたか? applicationContext.xmlにtransactionManagerがありますか? –