java - Hibernate UserType working in a testapplication but not on web service on tomcat -


i have set web service using hibernate 4.2.8 running on tomcat 7.0.41. use postgres 9.2 database it.

i created hibernate usertype use point datatype provided postgres. first tried small demo application test , play around with, working fine far.

when tried code on web service, reported following error when trying insert row custom type:

error (2014-03-10 15:58:49,226) der in sql für eine instanz von org.postgresql.geometric.pgpoint zu verwendende datentyp kann nicht abgeleitet werden. benutzen sie 'setobject()' mit einem expliziten typ, um ihn festzulegen. [sqlexceptionhelper.java:147]     org.hibernate.exception.sqlgrammarexception: not insert: [com.zhs.dbaccess.tableclasses.zhsjunk]     @ org.hibernate.exception.internal.sqlstateconversiondelegate.convert(sqlstateconversiondelegate.java:123)     @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:49)     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:125)     @ org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.java:3099)     @ org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.java:3521)     @ org.hibernate.action.internal.entityinsertaction.execute(entityinsertaction.java:88)     @ org.hibernate.engine.spi.actionqueue.execute(actionqueue.java:393)     @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:385)     @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:301)     @ org.hibernate.event.internal.abstractflushingeventlistener.performexecutions(abstractflushingeventlistener.java:349)     @ org.hibernate.event.internal.defaultflusheventlistener.onflush(defaultflusheventlistener.java:56)     @ org.hibernate.internal.sessionimpl.flush(sessionimpl.java:1159)     @ org.hibernate.internal.sessionimpl.managedflush(sessionimpl.java:404)     @ org.hibernate.engine.transaction.internal.jdbc.jdbctransaction.beforetransactioncommit(jdbctransaction.java:101)     @ org.hibernate.engine.transaction.spi.abstracttransactionimpl.commit(abstracttransactionimpl.java:175)     @ com.zhs.servicebase.clienthandling.clientrequesthandler.inserttaps(clientrequesthandler.java:609)     @ com.zhs.zhsservice.zhsservice.tap(zhsservice.java:69)     @ org.apache.jsp.test.requestresult_jsp._jspservice(requestresult_jsp.java:391)     @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70)     @ javax.servlet.http.httpservlet.service(httpservlet.java:728)     @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:432)     @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:390)     @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:334)     @ javax.servlet.http.httpservlet.service(httpservlet.java:728)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210)     @ org.netbeans.modules.web.monitor.server.monitorfilter.dofilter(monitorfilter.java:393)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:472)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:99)     @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)     @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1023)     @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:589)     @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:1852)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)     @ java.lang.thread.run(thread.java:722) caused by: org.postgresql.util.psqlexception: der in sql für eine instanz von org.postgresql.geometric.pgpoint zu verwendende datentyp kann nicht abgeleitet werden. benutzen sie 'setobject()' mit einem expliziten typ, um ihn festzulegen.     @ org.postgresql.jdbc2.abstractjdbc2statement.setobject(abstractjdbc2statement.java:1914)     @ org.postgresql.jdbc3g.abstractjdbc3gstatement.setobject(abstractjdbc3gstatement.java:36)     @ org.postgresql.jdbc4.abstractjdbc4statement.setobject(abstractjdbc4statement.java:47)     @ org.apache.tomcat.dbcp.dbcp.delegatingpreparedstatement.setobject(delegatingpreparedstatement.java:169)     @ org.apache.tomcat.dbcp.dbcp.delegatingpreparedstatement.setobject(delegatingpreparedstatement.java:169)     @ com.zhs.dbaccess.pgtypes.pointusertype.nullsafeset(pointusertype.java:281)     @ org.hibernate.type.customtype.nullsafeset(customtype.java:158)     @ org.hibernate.persister.entity.abstractentitypersister.dehydrate(abstractentitypersister.java:2798)     @ org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.java:3076)     ... 39 more 

i using same dbs different database, both set utf-8 character encoding

since hibernate connected db through jndi ressource provided tomcat, thought maybe tomcat breaking insert statement. removed jndi ressource , connected db directly, following result:

org.hibernate.exception.dataexception: not execute statement     @ org.hibernate.exception.internal.sqlstateconversiondelegate.convert(sqlstateconversiondelegate.java:135)     @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:49)     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:125)     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:110)     @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.executeupdate(resultsetreturnimpl.java:189)     @ org.hibernate.engine.jdbc.batch.internal.nonbatchingbatch.addtobatch(nonbatchingbatch.java:58)     @ org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.java:3079)     @ org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.java:3521)     @ org.hibernate.action.internal.entityinsertaction.execute(entityinsertaction.java:88)     @ org.hibernate.engine.spi.actionqueue.execute(actionqueue.java:393)     @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:385)     @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:301)     @ org.hibernate.event.internal.abstractflushingeventlistener.performexecutions(abstractflushingeventlistener.java:349)     @ org.hibernate.event.internal.defaultflusheventlistener.onflush(defaultflusheventlistener.java:56)     @ org.hibernate.internal.sessionimpl.flush(sessionimpl.java:1159)     @ org.hibernate.internal.sessionimpl.managedflush(sessionimpl.java:404)     @ org.hibernate.engine.transaction.internal.jdbc.jdbctransaction.beforetransactioncommit(jdbctransaction.java:101)     @ org.hibernate.engine.transaction.spi.abstracttransactionimpl.commit(abstracttransactionimpl.java:175)     @ com.zhs.servicebase.clienthandling.clientrequesthandler.inserttaps(clientrequesthandler.java:609)     @ com.zhs.zhsservice.zhsservice.tap(zhsservice.java:69)     @ org.apache.jsp.test.requestresult_jsp._jspservice(requestresult_jsp.java:391)     @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70)     @ javax.servlet.http.httpservlet.service(httpservlet.java:728)     @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:432)     @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:390)     @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:334)     @ javax.servlet.http.httpservlet.service(httpservlet.java:728)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210)     @ org.netbeans.modules.web.monitor.server.monitorfilter.dofilter(monitorfilter.java:393)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:472)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:99)     @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)     @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1023)     @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:589)     @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:1852)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)     @ java.lang.thread.run(thread.java:722) caused by: org.postgresql.util.psqlexception: error: invalid byte sequence encoding "utf8": 0x00     @ org.postgresql.core.v3.queryexecutorimpl.receiveerrorresponse(queryexecutorimpl.java:2161)     @ org.postgresql.core.v3.queryexecutorimpl.processresults(queryexecutorimpl.java:1890)     @ org.postgresql.core.v3.queryexecutorimpl.execute(queryexecutorimpl.java:255)     @ org.postgresql.jdbc2.abstractjdbc2statement.execute(abstractjdbc2statement.java:559)     @ org.postgresql.jdbc2.abstractjdbc2statement.executewithflags(abstractjdbc2statement.java:417)     @ org.postgresql.jdbc2.abstractjdbc2statement.executeupdate(abstractjdbc2statement.java:363)     @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.executeupdate(resultsetreturnimpl.java:186)     ... 41 more 

does know might cause this? since error changes when reconfiguring db connection, guess might have tomcat messing it.

ok, switched tomcat 8.03 , first error gone, realiszed somehow had values in sql null, that's second error. null values should have been handled db, somehow didn't.


Comments