Hibernate version: 3.05
Mapping documents: Das ist ja gerade das Problem
Code between sessionFactory.openSession() and session.close():
Name and version of the database you are using: MySQL 4.1.14-nt
---
Hallo Forum,
ich bin Anfänger in Sachen Hibernate und stehe momentan vor folgendem Problem:
Folgende Klasse:
Code:
public class User
{
...
protected String[] roles;
...
}
Nun sieht es so aus, dass ich sämtliche Properties dieser Userklasse auf die User-Table in meiner Datenbank gemappt habe - abgesehen von dem Array roles...
Die Rollen stehen in einer weiteren Tabelle (role) und sind per Foreign Key auf die User ID mit der Usertabelle assoziiert. Nun hätte ich gerne ein Mapping, das mir das Array auf diese Rollen-Tabelle mappt, komme aber nicht so recht weiter.
Ich habe es mit folgendem Mapping versucht:
Code:
<array name="roles" table="role">
<key column="BENSL" />
<list-index base="0" />
<element column="ROLE_NAME" type="java.lang.String" />
</array>
Sobald ich jetzt von einer JSP-Seite aus auf die roles-Property meines (erfolgreich geladenen) User-Objektes zugreifen will werde ich auf meine Error-Seite weitergeleitet, wo ich folgenden Stacktrace zu sehen bekomme:
Code:
could not initialize a collection: [de.mycompany.smvonline.domain.User.roles#gaa9629] org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.loadCollection(Loader.java:1441)
org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:99)
org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:488)
org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1430)
org.hibernate.type.CollectionType.getCollection(CollectionType.java:484)
org.hibernate.type.CollectionType.resolveKey(CollectionType.java:332)
org.hibernate.type.CollectionType.resolve(CollectionType.java:326)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:105)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:530)
org.hibernate.loader.Loader.doQuery(Loader.java:436)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
org.hibernate.loader.Loader.loadEntity(Loader.java:1345)
org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)
org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
de.allianz.smvonline.domain.User$$EnhancerByCGLIB$$31e9fe5b.getForename()
org.apache.jsp.profile_jsp._jspService(org.apache.jsp.profile_jsp:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
de.allianz.smvonline.FetchUserFilter.doFilter(FetchUserFilter.java:62)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Thread.java:595)
Ich schätze ich stelle mich einfach doof an, wäre aber dankbar, wenn mir jemand sagen könnte, wo mein/e Fehler liegt/liegen.
Vielen Dank schonmal,
Chopes