java - Hibernate No Session (No Dependencies) -
java - Hibernate No Session (No Dependencies) -
i have next jpa entity (generated netbeans):
package com.tsystems.tf.db.models; import java.io.serializable; import java.math.bigdecimal; import java.util.date; import javax.persistence.basic; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.namedqueries; import javax.persistence.namedquery; import javax.persistence.table; import javax.persistence.temporal; import javax.persistence.temporaltype; import javax.xml.bind.annotation.xmlrootelement; /** * * @author johorvat */ @entity @table(name = "table1") @xmlrootelement @namedqueries({ @namedquery(name = "testcase.findall", query = "select t testcase t") }) public class testcase implements serializable { private static final long serialversionuid = 1l; // @max(value=?) @min(value=?)//if know range of decimal fields consider using these annotations enforce field validation @id @basic(optional = false) @column(name = "testcase_id") private bigdecimal testcaseid; @basic(optional = false) @column(name = "testcase_name") private string testcasename; @basic(optional = false) @column(name = "creator") private string creator; @basic(optional = false) @column(name = "created_at") @temporal(temporaltype.timestamp) private date createdat; @column(name = "last_run") @temporal(temporaltype.timestamp) private date lastrun; @column(name = "last_run_result") private character lastrunresult; @column(name = "input") private string input; @column(name = "output") private string output; public testcase() { } public testcase(bigdecimal testcaseid) { this.testcaseid = testcaseid; } public testcase(bigdecimal testcaseid, string testcasename, string creator, date createdat) { this.testcaseid = testcaseid; this.testcasename = testcasename; this.creator = creator; this.createdat = createdat; } public bigdecimal gettestcaseid() { homecoming testcaseid; } public void settestcaseid(bigdecimal testcaseid) { this.testcaseid = testcaseid; } public string gettestcasename() { homecoming testcasename; } public void settestcasename(string testcasename) { this.testcasename = testcasename; } public string getcreator() { homecoming creator; } public void setcreator(string creator) { this.creator = creator; } public date getcreatedat() { homecoming createdat; } public void setcreatedat(date createdat) { this.createdat = createdat; } public date getlastrun() { homecoming lastrun; } public void setlastrun(date lastrun) { this.lastrun = lastrun; } public character getlastrunresult() { homecoming lastrunresult; } public void setlastrunresult(character lastrunresult) { this.lastrunresult = lastrunresult; } public string getinput() { homecoming input; } public void setinput(string input) { this.input = input; } public string getoutput() { homecoming output; } public void setoutput(string output) { this.output = output; } @override public int hashcode() { int hash = 0; hash += (testcaseid != null ? testcaseid.hashcode() : 0); homecoming hash; } @override public boolean equals(object object) { // todo: warning - method won't work in case id fields not set if (!(object instanceof testcase)) { homecoming false; } testcase other = (testcase) object; if ((this.testcaseid == null && other.testcaseid != null) || (this.testcaseid != null && !this.testcaseid.equals(other.testcaseid))) { homecoming false; } homecoming true; } @override public string tostring() { homecoming "com.tsystems.tf.db.models.testcase[ testcaseid=" + testcaseid + " ]"; } }
i seek implement crud operations entity using hibernate lazyevaluationexception. there no references. 1 table in database... can query when seek issue update exception beingness thrown. have naive implementation looks following:
package com.tsystems.tf.dao.impl; import com.tsystems.tf.dao.itestcasedao; import com.tsystems.tf.db.models.testcase; import java.math.bigdecimal; import java.util.collection; import javax.transaction.transactional; import org.apache.catalina.tribes.util.arrays; import org.hibernate.hibernateexception; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.boot.registry.standardserviceregistry; import org.hibernate.boot.registry.standardserviceregistrybuilder; import org.hibernate.cfg.configuration; import org.jboss.logging.logger; public class testcasedaoimpl implements itestcasedao { private static final sessionfactory sessionfactory; static { configuration configuration = new configuration(); configuration = configuration.configure(); standardserviceregistrybuilder registrybuilder = new standardserviceregistrybuilder(); registrybuilder = registrybuilder.applysettings(configuration.getproperties()); standardserviceregistry registry = registrybuilder.build(); sessionfactory = configuration.buildsessionfactory(registry); } @override public collection<testcase> getalltestcase() { session session = sessionfactory.opensession(); transaction transaction = null; collection<testcase> testcasecollection = null; seek { transaction = session.begintransaction(); query query = session.getnamedquery("testcase.findall"); testcasecollection = query.list(); transaction.commit(); } grab (final hibernateexception ex) { logger.getlogger(testcasedaoimpl.class) .error(ex.getmessage() + "\n" + arrays.tostring(ex.getstacktrace())); if (transaction != null) transaction.rollback(); } session.close(); homecoming testcasecollection; } @override public void createtestcase(testcase testcase) { throw new unsupportedoperationexception("not supported yet."); //to alter body of generated methods, take tools | templates. } @override public testcase readtestcase(bigdecimal id) { session session = sessionfactory.opensession(); transaction transaction = null; testcase testcase = null; seek { transaction = session.begintransaction(); testcase = (testcase) session.load(testcase.class, id); transaction.commit(); } grab (final hibernateexception ex) { logger.getlogger(testcasedaoimpl.class) .error(ex.getmessage() + "\n" + arrays.tostring(ex.getstacktrace())); if (transaction != null) transaction.rollback(); } session.close(); homecoming testcase; } @override public void updatetestcase(testcase testcase) { session session = sessionfactory.opensession(); transaction transaction = null; seek { transaction = session.begintransaction(); session.update(testcase); transaction.commit(); } grab (final hibernateexception ex) { logger.getlogger(testcasedaoimpl.class) .error(ex.getmessage() + "\n" + arrays.tostring(ex.getstacktrace())); if (transaction != null) transaction.rollback(); } session.close(); } @override public void deletetestcase(bigdecimal testcaseid) { throw new unsupportedoperationexception("not supported yet."); //to alter body of generated methods, take tools | templates. } }
when update beingness called bamm no session. why happening? getall succeeds nice , smooth that's it. else returns in no session error in logs.
stacktrace:
14-nov-2014 16:54:43.012 warning [http-apr-8080-exec-148] com.sun.faces.context.sessionmap.put jsf1063: warning! setting non-serializable attribute value httpsession (key: testcaseprovider, value class: com.tsystems.tf.beans.testcaseprovider). 14-nov-2014 16:54:46.812 warning [http-apr-8080-exec-148] com.sun.faces.lifecycle.invokeapplicationphase.execute #{testcaseprovider.updatetestcase()}: org.hibernate.lazyinitializationexception: not initialize proxy - no session javax.faces.facesexception: #{testcaseprovider.updatetestcase()}: org.hibernate.lazyinitializationexception: not initialize proxy - no session @ com.sun.faces.application.actionlistenerimpl.processaction(actionlistenerimpl.java:118) @ javax.faces.component.uicommand.broadcast(uicommand.java:315) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:291) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:506) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:142) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79) @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:610) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:537) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1081) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:658) @ org.apache.coyote.http11.http11aprprotocol$http11connectionhandler.process(http11aprprotocol.java:277) @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2403) @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2392) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(thread.java:745) caused by: javax.faces.el.evaluationexception: org.hibernate.lazyinitializationexception: not initialize proxy - no session @ javax.faces.component.methodbindingmethodexpressionadapter.invoke(methodbindingmethodexpressionadapter.java:101) @ com.sun.faces.application.actionlistenerimpl.processaction(actionlistenerimpl.java:102) ... 29 more caused by: org.hibernate.lazyinitializationexception: not initialize proxy - no session @ org.hibernate.proxy.abstractlazyinitializer.initialize(abstractlazyinitializer.java:164) @ org.hibernate.proxy.abstractlazyinitializer.getimplementation(abstractlazyinitializer.java:285) @ org.hibernate.proxy.pojo.javassist.javassistlazyinitializer.invoke(javassistlazyinitializer.java:185) @ com.tsystems.tf.db.models.testcase_$$_jvsta1c_0.settestcasename(testcase_$$_jvsta1c_0.java) @ com.tsystems.tf.beans.testcaseprovider.updatetestcase(testcaseprovider.java:60) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:483) @ org.apache.el.parser.astvalue.invoke(astvalue.java:245) @ org.apache.el.methodexpressionimpl.invoke(methodexpressionimpl.java:277) @ com.sun.faces.facelets.el.tagmethodexpression.invoke(tagmethodexpression.java:105) @ javax.faces.component.methodbindingmethodexpressionadapter.invoke(methodbindingmethodexpressionadapter.java:87) ... 30 more 14-nov-2014 16:54:46.832 severe [http-apr-8080-exec-148] com.sun.faces.context.ajaxexceptionhandlerimpl.handlepartialresponseerror javax.faces.el.evaluationexception: org.hibernate.lazyinitializationexception: not initialize proxy - no session @ javax.faces.component.methodbindingmethodexpressionadapter.invoke(methodbindingmethodexpressionadapter.java:101) @ com.sun.faces.application.actionlistenerimpl.processaction(actionlistenerimpl.java:102) @ javax.faces.component.uicommand.broadcast(uicommand.java:315) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:291) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:506) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:142) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79) @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:610) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:537) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1081) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:658) @ org.apache.coyote.http11.http11aprprotocol$http11connectionhandler.process(http11aprprotocol.java:277) @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2403) @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2392) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(thread.java:745) caused by: org.hibernate.lazyinitializationexception: not initialize proxy - no session @ org.hibernate.proxy.abstractlazyinitializer.initialize(abstractlazyinitializer.java:164) @ org.hibernate.proxy.abstractlazyinitializer.getimplementation(abstractlazyinitializer.java:285) @ org.hibernate.proxy.pojo.javassist.javassistlazyinitializer.invoke(javassistlazyinitializer.java:185) @ com.tsystems.tf.db.models.testcase_$$_jvsta1c_0.settestcasename(testcase_$$_jvsta1c_0.java) @ com.tsystems.tf.beans.testcaseprovider.updatetestcase(testcaseprovider.java:60) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:483) @ org.apache.el.parser.astvalue.invoke(astvalue.java:245) @ org.apache.el.methodexpressionimpl.invoke(methodexpressionimpl.java:277) @ com.sun.faces.facelets.el.tagmethodexpression.invoke(tagmethodexpression.java:105) @ javax.faces.component.methodbindingmethodexpressionadapter.invoke(methodbindingmethodexpressionadapter.java:87) ... 30 more
replace static block before() method, , add together session creation @ end of :
@before public void before() { configuration configuration = new configuration(); configuration = configuration.configure(); standardserviceregistrybuilder registrybuilder = new standardserviceregistrybuilder(); registrybuilder = registrybuilder.applysettings(configuration.getproperties()); standardserviceregistry registry = registrybuilder.build(); sessionfactory = configuration.buildsessionfactory(registry); session = sessionfactory.opensession(); }
and after() method :
@after public void after { session.close(); sessionfactory.close(); }
and of course, remove open/close session in each test.
java hibernate
Comments
Post a Comment