auf der Linie, an die diese Ausnahme auftritt, ist es bereits in Sitzungsbereich dh Sitzung ist für Proxy-Klasse noch diese Ausnahme zur Verfügung aufgetreten istorg.hibernate.LazyInitializationException: Alle möglichen Lösungen ausprobiert worden :(
Controller. Klassencode, in dem Fehler ist aufgetreten:
try{
SessionFactory sessionfactory = MyFactory.getSessionFactory();
Session s = sessionfactory.openSession();
EmployeeDetails e = getEmployee(p_id);
DailyDataDetails d = new DailyDataDetails();
d.setEmp_id(p_id);
d.setEmp_name(p_fname+" "+p_lname);
d.setPayable(pay);
d.setRate(Float.parseFloat(txtrate.getText()));
d.setSpindles(Integer.parseInt(txtSpindle.getText()));
d.setHour(hr);
d.setMin(min);
d.setWork_date(java.sql.Date.valueOf(select_date.getValue()));
s.beginTransaction();
e.getDdd().add(d);
s.save(e);
s.getTransaction().commit();
s.close();
Notifications notiBuild = Notifications.create()
.title("Value Added")
.text("Value added sucessfully")
.graphic(node)
.hideAfter(Duration.seconds(5))
.darkStyle()
.position(Pos.TOP_CENTER);
notiBuild.darkStyle();
notiBuild.show();
loadData();
}catch(Exception e){ e.printStackTrace();}
Ausnahme:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: models.EmployeeDetails.ddd, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:582)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:201)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:561)
at org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:392)
at org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:297)
at empman.FXMLAddValueController.toAddData(FXMLAddValueController.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Hier ist meine Modellklasse:
@OneToMany(fetch = FetchType.LAZY)
@JoinTable([email protected](name="eid"),i[email protected](name="id"))
private Collection<DailyDataDetails> ddd = new ArrayList<DailyDataDetails>();
public int getEid() {
return eid;
}
public void setEid(int eid) {
this.eid = eid;
}
public Collection<DailyDataDetails> getDdd() {
return ddd;
}
public void setDdd(Collection<DailyDataDetails> ddd) {
this.ddd = ddd;
}
Punkte beachtet werden:.
=> Ausnahme auf der Linie tritt e.getDdd() (d) in FXMLAddValueController, aber diese Linie bereits im Rahmen der Hibernate-Session hinzufügen
= > Ich habe fetch = FetchType.Lazy verwendet, weil ich keine Kinddaten möchte
=> Ich möchte spezifische Lösung und den Grund, warum dies passiert.
=> Es ist eine Desktop-App, so habe ich nur Hibernate.cfg.xml.
=> Ich bin mit One-to-Many-Mapping