Hallo zusammen,
ich sitze hier jetzt schon seit einer Stunde vor einem Problem, bei dem ich einfach nicht weiterkomme... Auch meine Recherchen im I-Net haben nichts Hilfreiches erbracht bzw. meine Versuche das Problem zu lösen waren alle ergebnislos. Vielleicht weiß hier ja jemand Rat.
Das Problem ist, dass ich folgende Meldung von Hibernate in den Logs finde und daraufhin eine Exception meines Web-Frameworks (Tapestry) erhalte:
Code:
18:34:34,824 WARN RequestExceptionReporter:44 - Unable to process client request: object references an unsaved transient instance - save the transient instance before flushing: de.plattform.domain.Setting
org.apache.hivemind.ApplicationRuntimeException: object references an unsaved transient instance - save the transient instance before flushing: de.plattform.domain.Setting [context:/WEB-INF/pages/EditSettings.page, line 6, column 21]
at org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:461)
at org.apache.tapestry.form.Form.trigger(Form.java:338)
at org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146)
at org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
Nun findet man viel, wie/warum so ein Fehler auftreten kann, nur wie ich ihn behebe ist mir noch nicht ganz klar.
Vielleicht zunächst mal der Code, der _wahrscheinlich_ für den Fehler verantwortlich ist:
Code:
public void updateSettings(Integer userId, List<Setting> settings)
{
Person administrator = _personDao.findById(userId);
Iterator iterator = settings.iterator();
Setting setting = null;
while (iterator.hasNext())
{
setting = (Setting) iterator.next();
if (setting.hashCode() != _settingDao.findById(setting.getId())
.hashCode())
{
setting.setAdministrator(administrator);
setting
.setLastAccess(new Timestamp(System.currentTimeMillis()));
_settingDao.updateSetting(setting);
}
}
}
Helfen würde es mir zum Beispiel schonmal zu wissen, dass der Code korrekt is/funktionieren sollte oder aber Fehler enthält. Die Klasse Setting is ein persistentes Domain Object...
Wenn ihr nähere Informationen benötigt, dann einfach kurz Bescheid sagen und ich liefere sie nach sofern mir möglich ;)
Ich benutze die aktuelle Version von Hibernate, Tomcat 5.5, Tapestry auf Tapernate-Basis (transaction-per-session im Moment) und die List<Setting> kommt direkt aus der Klasse der EditSettings Seite.
Danke!