Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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
Hibernate异常java.lang.ClassCastException:java.lang.Boolean不能转换为java.util.Date_Java_Spring_Hibernate - Fatal编程技术网

Hibernate异常java.lang.ClassCastException:java.lang.Boolean不能转换为java.util.Date

Hibernate异常java.lang.ClassCastException:java.lang.Boolean不能转换为java.util.Date,java,spring,hibernate,Java,Spring,Hibernate,在我们的项目中,我们面临以下堆栈跟踪异常。它有时在对象合并期间发生(我无法复制它)。我不知道是哪个对象导致了这个错误,因为有很多级联。环境并不重要,它发生在生产和开发环境中 我们使用Hibernate4.2.5.Final、Spring3.2.2.RELEASE、Java7和Tomcat7 java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.util.Date at org.hibernate.type.d

在我们的项目中,我们面临以下堆栈跟踪异常。它有时在对象合并期间发生(我无法复制它)。我不知道是哪个对象导致了这个错误,因为有很多级联。环境并不重要,它发生在生产和开发环境中

我们使用Hibernate4.2.5.Final、Spring3.2.2.RELEASE、Java7和Tomcat7

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.util.Date
at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.areEqual(JdbcTimestampTypeDescriptor.java:41)
at org.hibernate.type.AbstractStandardBasicType.isEqual(AbstractStandardBasicType.java:205)
at org.hibernate.type.AbstractStandardBasicType.isSame(AbstractStandardBasicType.java:195)
at org.hibernate.type.AbstractStandardBasicType.isDirty(AbstractStandardBasicType.java:231)
at org.hibernate.type.AbstractStandardBasicType.isDirty(AbstractStandardBasicType.java:227)
at org.hibernate.type.TypeHelper.findDirty(TypeHelper.java:294)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:4037)
at org.hibernate.event.internal.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:527)
at org.hibernate.event.internal.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:234)
at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:163)
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:228)
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:100)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)
at org.springframework.orm.hibernate4.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:91)
at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:925)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:738)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy115.method(Unknown Source)
at com.some.package.OurClass.method(OurClass.java:114)

编辑:方法“com.some.package.OurClass.method”刚刚执行了Hibernate merge()操作。

我再次查看了它,找到了原因。我们在域对象中有一个名为“created”(日期类型)的字段,并且创建了临时方法。方法如下所示:

@Column(...)
public Date getCreated() {
    return created;
}

@Transient
public boolean isCreated() {
    return isStatus(StatusType.CREATED);
}

我通过将方法isCreated重命名为isCreatedStatus(),解决了这个问题。

在给出最终答案之前,您需要提供代码来演示这是在哪里发生的。您需要至少提供
com.some.package.OurClass.method(OurClass.java:114)的代码。
,并且可能,取决于涉及的实体,Hibernate实体的源代码。