Java Hibernate查询中的死锁
我已经在网上搜索过了,但没有在下面找到任何东西。如果我遗漏了什么,请告诉我 我们的服务器出现c3po的“明显死锁”异常。PFB DAO功能: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
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
接口的哪个实现。