Java Hibernate查询中的死锁

Java Hibernate查询中的死锁,java,hibernate,deadlock,c3p0,Java,Hibernate,Deadlock,C3p0,我已经在网上搜索过了,但没有在下面找到任何东西。如果我遗漏了什么,请告诉我 我们的服务器出现c3po的“明显死锁”异常。PFB DAO功能: try{ criteria = session.createCriteria(); ....... // restriction et al. List<MyObject> myObj = (List<MyObj>) criteria.list(); }catch(Exception e){ //excepti

我已经在网上搜索过了,但没有在下面找到任何东西。如果我遗漏了什么,请告诉我

我们的服务器出现c3po的“明显死锁”异常。PFB DAO功能:

 try{
   criteria = session.createCriteria();
   ....... // restriction et al.
   List<MyObject> myObj = (List<MyObj>) criteria.list();
 }catch(Exception e){ //exception handling }
 }finally{ session.close();  }
试试看{
criteria=session.createCriteria();
……限制等。
List myObj=(List)criteria.List();
}捕获(异常e){//异常处理}
}最后{session.close();}
当我们在MyObject.class中添加下面的代码时,我们开始看到死锁异常

 public class MyObject{
  ...//member variables and methods
  private Set<CustomClass> variable;

  public void setVariable(Set<CustomClass> variables){
     variables.stream().sorted((e1, e2) -> e1.myFn()
                .compareTo(e2.myFn())); //encountered deadlock exception after adding this line
     this.variables = variables;
  }
 }
公共类MyObject{
…//成员变量和方法
私有集变量;
公共void setVariable(设置变量){
variables.stream().sorted((e1,e2)->e1.myFn()
.compareTo(e2.myFn());//添加此行后遇到死锁异常
变量=变量;
}
}
我删除了排序代码,并在hbm映射中添加了ORDERBY子句来修复死锁异常。 我的问题是-为什么这会首先导致僵局?

谢谢


编辑:纠正了代码中的输入错误

这是如何编译的
Stream.sorted()
返回另一个流,而不是set.Wow。我很惊讶。我看不到任何编译错误,我们的构建系统也没有对此进行标记。为什么要对集合进行排序,然后将排序后的数据放入集合中?集合是无序集合。我们被迫在hbm中为此对象使用集合关联映射作为最后的尝试。我不太记得出现这种情况的原因,但错误消息说有足够的bag实例。您能打印出传入的对象吗
setVariable(…)
?我感兴趣的是
Set
接口的哪个实现被传递。这个接口首先是如何编译的
Stream.sorted()
返回另一个流,而不是set.Wow。我很惊讶。我看不到任何编译错误,我们的构建系统也没有对此进行标记。为什么要对集合进行排序,然后将排序后的数据放入集合中?集合是无序集合。我们被迫在hbm中为此对象使用集合关联映射作为最后的尝试。我不太记得出现这种情况的原因,但错误消息说有足够的bag实例。您能打印出传入的对象吗
setVariable(…)
?我感兴趣的是通过
Set
接口的哪个实现。