Tôi đang học lập bản đồ ngủ đông bằng chú thích. Tôi đã hoàn thành một phần. I E. Tôi có thể chèn lớp con tự động khi tôi lưu bảng cha. see_that.thất bại trong việc khởi tạo một tập hợp vai trò: com.pojo.Student.phonenos, không có phiên hoặc phiên nào bị đóng
Nhưng tôi đã không nhận được bảng con khi tôi đang tìm nạp bảng chính. Cũng gặp lỗi
failed to lazily initialize a collection of role: com.pojo.one2many.unidirectional.Student.phonenos, no session or session was closed
Mã của tôi được thêm vào đây để đánh giá bạn. Xin vui lòng đi qua nó. Và cho tôi lời khuyên tuyệt vời. Student.java. (Lớp cha)
@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 (lớp con)
@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;
}
lớp dao của tôi
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;
}
Out đặt là
failed to lazily initialize a collection of role: com.pojo.one2many.unidirectional.Student.phonenos, no session or session was closed
Ở đây tôi đang sử dụng một chiều (khoá ngoài) ánh xạ một-nhiều (không phải j bảng oint, hai chiều).
Summerizing câu hỏi của tôi
1) làm thế nào để có được bảng con khi chúng ta lấy bảng cha, ngược lại
2) những gì là háo hức và lười biếng lấy.
3) unidirection, bidirection và tham gia bảng trong trường hợp lập bản đồ một-nhiều, cái nào có nhiều quyền lực hơn.
Mã pice không hoạt động ... getHibernateTemplate(). Execute (new HibernateCallback() biên dịch lỗi. – jaleel
Tnx. bạn cho phát lại .. mong đợi giải pháp. – jaleel
Bạn đã thử chú thích DAO hoặc phương thức với '@ Transactional' chưa? Bạn có một transactionManager trong applicationContext.xml của bạn? –