Ich habe eine "created"-Spalte in der Benutzerdatenbank meines MySQL-TIMESTAMP-Typs hinzugefügt. Ich versuche, dies auf eine Joda LocalDateTime mit Jadiru's UserType Hibernate-Mappern abzubilden. Ich verwende die UserType-Klassen Version 2.0 und habe es mit Version 3.6.0 und 3.6.7 von Hibernate versucht. Ich verwende JDK 1.6. Diese Datenschnittstelle wird als Teil einer Spring 3-Webanwendung verwendet.
Hier ist der relevante Teil meines Persistenzobjekts -
@Column(name="created")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime created;
Nichts zu kompliziert, aber ich erhalte die folgende Ausnahme, wenn meine UserDAO versucht, die Tabelle abzufragen -
java.lang.AbstractMethodError: org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime.nullSafeGet(Ljava/sql/ResultSet;[Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
bei org.hibernate.type.CustomType.nullSafeGet(CustomType.java:109)
bei org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
bei org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)
bei org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
bei org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
bei org.hibernate.loader.Loader.getRow(Loader.java:1355)
bei org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
bei org.hibernate.loader.Loader.doQuery(Loader.java:829)
bei org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
bei org.hibernate.loader.Loader.doList(Loader.java:2533)
bei org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
bei org.hibernate.loader.Loader.list(Loader.java:2271)
bei org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
bei org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
bei org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
bei org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
bei org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
bei org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:921)
bei org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:1)
bei org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
bei org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
bei org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
bei org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:908)
bei com.vox.dao.UserDAO.getUser(UserDAO.java:27)
bei com.vox.security.DashboardAuthenticationProcessingFilter.successfulAuthentication(DashboardAuthenticationProcessingFilter.java:30)
bei org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
bei org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
bei org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
bei org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
bei org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
bei org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
bei org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
bei org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
bei org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
bei org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
bei org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
bei org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
bei org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
bei org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
bei org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
bei org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
bei org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
bei java.lang.Thread.run(Thread.java:637)
Ich habe versucht, alle Annotationen auf den Methoden anstelle von Feldern zu platzieren, aber das gleiche Problem.
Ich habe auch versucht, verschiedene Spaltentypen abzubilden, wie DATE auf ein LocalDate und TIME auf ein LocalTIME, aber jedes gibt einen ähnlichen Fehler.
Eine weitere Sache, die ich versucht habe, war die Verwendung einer Kriterienabfrage anstelle einer auf Vorlagen basierenden Abfrage. Dies hat das Problem nicht beeinflusst.
Ich habe den Klassenpfad auf doppelte Bibliotheken überprüft, von denen es keine zu geben scheint.
Etwas stimmt offensichtlich nicht mit meiner Konfiguration, da die UserType-Dokumentation sagt, dass dies einfach funktionieren sollte. Keine Google-Treffer für diesen Fehler überhaupt. Bitte kann mir jemand den richtigen Weg weisen?
Danke,
Dan