java - HIbernate JPA caused by incompatible with javassist.util.proxy.Proxy -
hibernate jpa
caused incompatible javassist.util.proxy.proxy
.
code
public class entitya { @id private string id; @onetoone(fetch = fetchtype.lazy) @joincolumn(name = "entityb_id") private entityb entityb; @manytoone(fetch = fetchtype.lazy) @joincolumn(name = "entityc_id") private entityc entityc; } string sql = "select o entitya o " + "left outer join o.entityb o1 "; final typedquery<entitya> query = getem().createquery(sql, entitya.class); final list<entitya> result = query.getresultlist();
questions
when ran above query below exception, did have idea?
my query didn't involved "entityc", why exception throw regarding entityc @ getresultlist() method?
exception
caused by: java.lang.classcastexception: xxx.xx.xx.entityc_$$_javassist_105 incompatible javassist.util.proxy.proxy @ org.hibernate.proxy.pojo.javassist.javassistlazyinitializer.getproxy(javassistlazyinitializer.java:148) @ org.hibernate.proxy.pojo.javassist.javassistproxyfactory.getproxy(javassistproxyfactory.java:73) @ org.hibernate.tuple.entity.abstractentitytuplizer.createproxy(abstractentitytuplizer.java:758) @ org.hibernate.persister.entity.abstractentitypersister.createproxy(abstractentitypersister.java:4419) @ org.hibernate.event.internal.defaultloadeventlistener.createproxyifnecessary(defaultloadeventlistener.java:334) @ org.hibernate.event.internal.defaultloadeventlistener.proxyorload(defaultloadeventlistener.java:260) @ org.hibernate.event.internal.defaultloadeventlistener.onload(defaultloadeventlistener.java:152) @ org.hibernate.internal.sessionimpl.fireload(sessionimpl.java:1053) @ org.hibernate.internal.sessionimpl.internalload(sessionimpl.java:980) @ org.hibernate.type.entitytype.resolveidentifier(entitytype.java:714) @ org.hibernate.type.entitytype.resolve(entitytype.java:502) @ org.hibernate.engine.internal.twophaseload.doinitializeentity(twophaseload.java:168) @ org.hibernate.engine.internal.twophaseload.initializeentity(twophaseload.java:137) @ org.hibernate.loader.loader.initializeentitiesandcollections(loader.java:1112) @ org.hibernate.loader.loader.processresultset(loader.java:969) @ org.hibernate.loader.loader.doquery(loader.java:917) @ org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:348) @ org.hibernate.loader.loader.dolist(loader.java:2550) @ org.hibernate.loader.loader.dolist(loader.java:2536) @ org.hibernate.loader.loader.listignorequerycache(loader.java:2366) @ org.hibernate.loader.loader.list(loader.java:2361) @ org.hibernate.loader.hql.queryloader.list(queryloader.java:495) @ org.hibernate.hql.internal.ast.querytranslatorimpl.list(querytranslatorimpl.java:357) @ org.hibernate.engine.query.spi.hqlqueryplan.performlist(hqlqueryplan.java:198) @ org.hibernate.internal.sessionimpl.list(sessionimpl.java:1230) @ org.hibernate.internal.queryimpl.list(queryimpl.java:101) @ org.hibernate.ejb.queryimpl.getresultlist(queryimpl.java:268) @ sun.reflect.generatedmethodaccessor213.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:56) @ java.lang.reflect.method.invoke(method.java:620) @ org.springframework.orm.jpa.sharedentitymanagercreator$deferredqueryinvocationhandler.invoke(sharedentitymanagercreator.java:368) @ com.sun.proxy.$proxy153.getresultlist(unknown source) @ com.cimb.module.payment.bill.ce.dao.cemyccpayeeaccessbean.findnormalbypayeenamekeyword(cemyccpayeeaccessbean.java:59) @ com.cimb.module.payment.bill.atom.retrievebillerbykeywordmyatom.performnormalbillersearch(retrievebillerbykeywordmyatom.java:58) @ com.cimb.module.payment.bill.atom.retrievebillerbykeywordmyatom.proceednextstep(retrievebillerbykeywordmyatom.java:45) @ core.logic.defaultlogicprocessor.process(defaultlogicprocessor.java:78) ... 94 more
ok have encountered problem too. after research here conclusion:
javassist old or missing older spring version, have add / update javassist. can latest maven repositorty. link here!
if getting
org.hibernate.lazyinitializationexception: not initialize proxy - no session
error, due trying lazy load after connection has been closed. may need add@transactional
annotation in service / controller (depending on project's design), in either class level or method level.
Comments
Post a Comment