Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提交期间的休眠异常_Java_Hibernate - Fatal编程技术网

Java 提交期间的休眠异常

Java 提交期间的休眠异常,java,hibernate,Java,Hibernate,我们正在使用Spring2.5.6及其附带的Hibernate 作为我们架构的一部分,我们有一个服务和一个管理器。该服务调用经理来提供一个工作单元。我们在管理器周围放置一个AOP拦截器来管理事务 在我们的例子中,经理创建一个图像和一个注释,将该图像链接到一个人,然后返回到服务。这些都是全新的功能 运行此命令时,我得到以下堆栈跟踪: 2013-07-11 08:06:52,969 3773870 ERROR org.hibernate.event.def.AbstractFlushingEvent

我们正在使用Spring2.5.6及其附带的Hibernate

作为我们架构的一部分,我们有一个服务和一个管理器。该服务调用经理来提供一个工作单元。我们在管理器周围放置一个AOP拦截器来管理事务

在我们的例子中,经理创建一个图像和一个注释,将该图像链接到一个人,然后返回到服务。这些都是全新的功能

运行此命令时,我得到以下堆栈跟踪:

2013-07-11 08:06:52,969 3773870 ERROR org.hibernate.event.def.AbstractFlushingEventListener | Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy50.attachImage(Unknown Source)
        at com.acs.gs.juror.service.person.impl.PersonServiceImpl$1.retry(PersonServiceImpl.java:557)
        at com.acs.gs.juror.service.Service.withRetry(Service.java:362)
        at com.acs.gs.juror.service.person.impl.PersonServiceImpl.attachImage(PersonServiceImpl.java:562)
        at com.xerox.tclg.juror.servlet.StoreImageServlet.handleRequestInternal(StoreImageServlet.java:73)
        at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        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:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.BatchUpdateException: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
        at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10345)
        at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 41 more
当我搜索错误时,我发现了很多关于空值查询的条目。问题是我已经做了插入,效果很好。它在提交期间抛出此异常

image和note都是我过去使用过的现有字段。我最近在note to image上添加了一个链接,以便便笺可以引用图像

就因为有错误信息,我对这张图片产生了怀疑。以下是图像上图像数据字段的定义:

  @Column( name = "IMAGE_DATA" )
  @Lob()
  private byte[ ] imageData;

如果您能给我一些建议,我将不胜感激。

答案的关键在stacktrace的下半部分:

ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
很难说这是关于哪个字段的,但由于您使用的是图像,因此您为该类/字段配置持久性的方式可能有问题

也许您应该通过使用注释提示Hibernate如何存储字段

@Lob(type = LobType.BLOB)

问题最终涉及到缺少注释

我刚刚在note条目中添加了一个图像,并将其设置为指向图像的UUID,但没有使用@OneToOne。因此,它似乎试图将图像数据存储在UUID的字段中


我添加了@OneToOne,问题就消失了。Nathan说的也很正确,在提交之前它实际上是不会被插入的。为了找到问题,我将这些插入移到事务之外,以便立即插入。这有助于我追踪问题。

我更改了最后一部分,按照您建议的思路提供了更多信息。请让我知道。记住Hibernate在必须执行任何插入之前(在提交或会话刷新时)不会执行任何插入。你好,老朋友。我明白了,回去工作吧。:)我对此感到奇怪。我会调查的。