Я обновляю Hibernate 3 до Hibernate 4.1. При запуске приложения, я ниже за исключением:nullSafeGet in Hibernate 4
java.lang.AbstractMethodError
at org.hibernate.type.CustomType.nullSafeGet(CustomType.java:124)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:106)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2701)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1541)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1473)
at org.hibernate.loader.Loader.getRow(Loader.java:1373)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:640)
at org.hibernate.loader.Loader.doQuery(Loader.java:850)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:2042)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3710)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:439)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:420)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:251)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:992)
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:919)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:610)
at org.hibernate.type.EntityType.resolve(EntityType.java:438)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:150)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:995)
at org.hibernate.loader.Loader.doQuery(Loader.java:874)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
at org.hibernate.loader.Loader.doList(Loader.java:2447)
at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2292)
at org.hibernate.loader.Loader.list(Loader.java:2255)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1161)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at my.com.MyDAOImpl.findDocuments(MyDaoImpl.java:22)......
Я понимаю Hibernate4 измененные параметры в nullSafeGet()
и nullSafeSet()
. Поэтому я должен переопределить эти методы с использованием новых параметров и в любом случае игнорировать SessionImplementor в настройке типа персонализированного типа.
findDocuments()
в основном документы запроса из таблицы Documents, ни одно из полей Document.hmb.xml
не имеет индивидуального типа. Моя головоломка - почему называется CustomType.nullSafeGet()
? В Document.hmb.xml есть только один подозреваемый, но на данный момент я не уверен, как после того, как я изменил тип на «Blob» и получил такую же ошибку.
<property name="image" column="PICTURE" type="org.springframework.orm.hibernate3.support.BlobByteArrayType"/>
Помошь?
Если вы переключитесь с Hibernate 3 на Hibernate 4, вы также должны переключиться на версию Spring, которая поддерживает Hibernate 4, в противном случае вы можете получить неожиданные ошибки, подобные этим. Проверьте документацию версии Spring, которую вы используете. – Jesper
Я также обновляю весну с 2.5.4 до 3.2. Да, на данный момент происходит множество неожиданных ошибок. Спасибо за предложение yr. – user3305262