私のユーザのデータベースにMySQL TIMESTAMPタイプの "created"カラムを導入しました。私はこれをJadiruのUserType Hibernateマッパーを使ってJoda LocalDateTimeにマップしようとしています。私はUserTypeクラスのv2.0を使用しています。私は、v 3.6.0および3.6.7のHibernateで試しました。私はJDK 1.6を使用しています。このデータアクセス層は、Spring 3 Webアプリケーションの一部として使用されています。抽象的なJadiru Joda/Hibernateの永続的なユーザタイプを使用した場合のエラー
ここに私の永続オブジェクトの該当ビットだ - あまりにも複雑
@Column(name = "created")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime created;
何も、私UserDAOがテーブルを照会しようとするたび、私は次の例外を取得する -
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)
私が試しましたフィールドの代わりにすべての注釈をメソッドに配置しますが、同じ問題です。
また、DATEをLocalDateに、TIMEをLocalTimeにマッピングするなど、さまざまな種類の列をマッピングしようとしましたが、それぞれ同様のエラーが発生します。
もう1つは、テンプレートベースのクエリの代わりに条件クエリを使用していました。これは問題に影響しませんでした。
重複したライブラリのクラスパスを確認しましたが、表示されません。
私のセットアップでは、何かが明らかに間違っています。これは、UserTypeのマニュアルによれば、これはうまくいくはずです。このエラーのためのGoogleのヒットはまったくありません。誰かが正しい方向に私を向けることができますか?
おかげで、
ダン
Andreas、ありがとうございます。私が使っていたUserTypeのバージョン(2.0)は、リリースノートのHibernate 4と互換性があるとしてリストされています。このライブラリのバージョン1.9を使用すると例外がなくなります。このライブラリは、Hibernate 3.6で最後にサポートされているリリースです。 – danw
ありがとう!同じ問題がありました。これは多くの時間を節約するのに役立ちました。 –
こんにちは! 1.9バージョンを正しくインポートするには、pom.xmlの中にどのようなコードを挿入しましたか? – renatoargh