Wprowadziłem kolumnę "created" do bazy danych mojego użytkownika o nazwie TIMESTAMP MySQL. Próbuję zmapować to do Joda LocalDateTime przy użyciu mappers UserType Hibernate firmy Jadiru. Używam v2.0 z klas UserType i próbowałem z wersji 3.6.0 i 3.6.7 z Hibernate. Używam JDK 1.6. Ta warstwa dostępu do danych jest używana jako część aplikacji internetowej Spring 3.AbstractMethodError podczas korzystania z trwałych typów użytkowników Jadiru Joda/Hibernate
Oto odpowiedni kawałek mojego trwałości obiektu -
@Column(name = "created")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime created;
nic zbyt skomplikowana, ale pojawia się następujący wyjątek, gdy mój UserDAO próbuje kwerendy tabeli -
java.lang.AbstractMethodError: org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime.nullSafeGet(Ljava/sql/ResultSet;[Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
at org.hibernate.type.CustomType.nullSafeGet(CustomType.java:109)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
at org.hibernate.loader.Loader.getRow(Loader.java:1355)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:921)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:908)
at com.vox.dao.UserDAO.getUser(UserDAO.java:27)
at com.vox.security.DashboardAuthenticationProcessingFilter.successfulAuthentication(DashboardAuthenticationProcessingFilter.java:30)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:637)
próbowałam umieszczanie wszystkich adnotacji na metodach zamiast na polach, ale na tym samym problemie.
Próbowałem również mapowanie różnych typów kolumn, takich jak DATE na LocalDate i TIME na LocalTIME, ale każdy z nich daje podobny błąd.
Inną rzeczą, którą próbowałem, było użycie zapytania kryterialnego zamiast zapytania opartego na szablonie. Nie miało to wpływu na problem.
Sprawdziłem ścieżkę klas dla zduplikowanych bibliotek, które nie wydają się być.
Coś jest nie tak z moją konfiguracją, ponieważ dokumentacja UserType mówi, że to powinno działać. Brak trafień w Google dla tego błędu. Czy ktoś może wskazać mi właściwy kierunek?
Dzięki,
Dan
Andreas, Dziękuję za odpowiedź. Byłeś na miejscu - wersja UserType, której używałem (2.0) jest wymieniona jako zgodna z Hibernate 4 w notatkach do wydania. Wyjątek ustępuje, gdy używam wersji 1.9 tej biblioteki, która wydaje się być ostatnią obsługiwaną wersją dla Hibernate 3.6. – danw
Dzięki! miał ten sam problem. Pomogło to zaoszczędzić dużo czasu. –
Witam! Jaki fragment kodu umieściłeś w swoim pom.xml, aby poprawnie zaimportować wersję 1.9? – renatoargh