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
Sql 来自grails项目的hibernate断言失败_Sql_Hibernate_Grails_Groovy - Fatal编程技术网

Sql 来自grails项目的hibernate断言失败

Sql 来自grails项目的hibernate断言失败,sql,hibernate,grails,groovy,Sql,Hibernate,Grails,Groovy,我得到一个如下开始的错误。这与我的级联设置方式有关吗?哪里是开始调查的合适地点?现在我有一个角色,有很多角色。角色属于角色。RoleDuty只有一个字段duty,它是一个可为空的字符串。角色具有RoleDuties列表的所有删除孤立项的映射 06.12.2010 10:02:17 *ERROR* AssertionFailure: an assertion failure occured (this may indicate a bug in Hibernate, but is more li

我得到一个如下开始的错误。这与我的级联设置方式有关吗?哪里是开始调查的合适地点?现在我有一个角色,有很多角色。角色属于角色。RoleDuty只有一个字段duty,它是一个可为空的字符串。角色具有RoleDuties列表的所有删除孤立项的映射

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>()


}
类角色
{
静态belongsTo=[角色:角色]
静态约束={
责任(可为空:真)
} 
静态映射={
职责类型:“文本”
}
串职责;
删除布尔值
静态瞬变=[''删除']
@XmlValue
公共字符串getDuty(){
退货税;
}
字符串toString()
{
退货税;
}
}
公共类角色实现了可比性
{
静态belongsTo=[项目:项目]
静态hasMany=[roleDuties:RoleDuty]
静态映射={
角色级联:“全部删除孤儿”,懒惰:false
}
List roleDuties=new ArrayList()
}
Hibernate的错误消息“异常发生后不要刷新会话”表明此会话上发生了与Hibernate相关的异常,但您的代码捕获了该异常并继续使用该会话。Hibernate的API声明,如果Hibernate抛出异常,则必须回滚事务/关闭会话,并在新会话中执行任何您想要的操作


很难从这个堆栈跟踪和调试Hibernate错误中准确地说出问题所在,而调试Hibernate错误涉及反复试验。我建议您调试代码,同时在此之前查找异常,并找出如何避免它。

请显示您的角色和角色类定义我发现此链接非常有用,我遇到了一些类似的问题