gpt4 book ai didi

sql - 从grails项目中 hibernate AsserttionFailure

转载 作者:行者123 更新时间:2023-12-02 13:50:08 25 4
gpt4 key购买 nike

我收到一个错误,该错误开始如下。这与我的级联的设置方式有关吗?在哪里开始调查的合适位置?现在,我有一个角色,其中有很多RoleDuty。 RoleDuty属于Role。 RoleDuty仅具有一个字段duty,该字段为可为空的字符串。角色具有RoleDuties列表的all-delete-orphan映射。

06.12.2010 10:02:17 *ERROR* AssertionFailure: an assertion failure occured (this may indicate a bug in Hibernate, but is
more likely due to unsafe use of the session) (AssertionFailure.java, line 47)
org.hibernate.AssertionFailure: null id in RoleDuty entry (don't flush the Session after an exception occurs)
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:78)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:187)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:14
3)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListen
er.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
at org.codehaus.groovy.grails.orm.hibernate.support.GrailsOpenSessionInViewInterceptor.flushIfNecessary(GrailsOp
enSessionInViewInterceptor.java:116)
at org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor.postHandle(OpenSessionInViewIntercept
or.java:181)
at org.codehaus.groovy.grails.orm.hibernate.support.GrailsOpenSessionInViewInterceptor.postHandle(GrailsOpenSess
ionInViewInterceptor.java:66)
at org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.postHandle(WebRequestHandlerInter
ceptorAdapter.java:61)
at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:303)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

类定义:
class RoleDuty
{


static belongsTo = [role:Role]

static constraints = {
duty(nullable: true)
}
static mapping = {
duty type:"text"
}

String duty;
boolean _deleted
static transients = ['_deleted']

@XmlValue
public String getDuty(){
return duty;
}


String toString()
{
return duty;
}

}


public class Role implements Comparable
{

static belongsTo = [project:Project]
static hasMany = [ roleDuties:RoleDuty]

static mapping = {
roleDuties cascade:"all-delete-orphan", lazy:false
}

List<RoleDuty> roleDuties = new ArrayList<RoleDuty>()


}

最佳答案

Hibernate的错误消息“发生异常后不要刷新 session ”表明该 session 上发生了与Hibernate相关的异常,但是您的代码捕获了该异常并继续使用该 session 。 Hibernate的API指出,如果Hibernate引发异常,则必须回滚事务/关闭Session并在新的Session中执行您想做的任何事情。

仅从此堆栈跟踪和调试Hibernate错误涉及试错就很难确切地说明问题是什么。我建议您在此代码之前查找异常时调试代码,并弄清楚如何避免它。

关于sql - 从grails项目中 hibernate AsserttionFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com