Hibernate 异常:
Illegal attempt to associate a collection with two open sessions
@author:阙超强
Time:2011-12-5 17:31:57
今天在做项目发现的问题:
在做任务定时发送的时候发现此异常,于是我百度啊,找谷老师啊。
1.如以下找到的资料之一:
错误信息:
org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions;
错误原因:
1. 一个Action在两个线程中同时运行,造成并发。
解决方法:
1. 阻止重复提交。可以利用Struts Token机制。
但是还是不能解决我的问题。
2.经常debug 测试 终于发现了一个问题:
原来属性重名了
我在Action中已经注入了实体类
private Mission mission;
在下面某个内部类方法中也重名的定义
Mission mission = misList.get(0);
并且他们都被调用了同一方法
missionBussiness.addData(mis);
处理结果:改掉其中的一个属性名,错误仍然存在。
3.找到资料 :
在pring配置文件中的action bean中添加属性 scope="prototype"
问题依然存在。
4.最后终于找到一个可以解决我问题的方案:
使用hibenate的merge方法代替save、update等方法。
merge和saveOrUpdate方法区别在于:merge方法是把我们提供的对象转变为托管状态的对象;而saveOrUpdate则是把我们提供的对象变成一个持久化对象;说的通俗一点就是:saveOrUpdate后的对象会纳入session的管理,对象的状态会跟数据库同步,再次查询该对象会直接从session中取,merge后的对 象不会纳入session的管理,再次查询该对象还是会从数据库中取。所以一般建议用merge
将MissionDaoImpl类中的 this.getHibernateTemplate().save(data); save方法改为了merge方法
将此方法:public boolean addData(Object data) throws Exception {
this.getHibernateTemplate().save(data);
return true;
}
改为:
public boolean addData(Object data) throws Exception {
this.getHibernateTemplate().merge(data);
return true;
}
将MissionDaoImpl类中的 this.getHibernateTemplate().update(data); update方法改为了merge方法
将此方法:public void update(Object data) throws Exception {
super.getHibernateTemplate().update(data);
}
改为:public void update(Object data) throws Exception {
super.getHibernateTemplate().merge(data);
}
分享到:
相关推荐
在Java编程环境中,有时会遇到一个常见的错误:"java.security.InvalidKeyException: Illegal key size"。这个错误通常是由于Java安全策略的限制导致的,尤其是当你尝试使用超过默认限制的密钥长度(例如,超过128位...
对接微信接口中因为jdk8解密长度不够 报错 java.security.InvalidKeyException: Illegal key size 替换路径:(记得备份原有的文件) C:\Program Files\Java\jdk1.8.0_131\jre\lib\security
在Java编程中,`java.security.InvalidKeyException: Illegal key size` 是一个常见的错误,通常出现在加密或解密操作中,尤其是涉及到对称加密算法如AES(高级加密标准)时。这个错误表明您试图使用的密钥长度不受...
当在Java环境中使用AES加密时遇到 `java.security.InvalidKeyException: Illegal key size or default parameter` 这个异常,通常意味着密钥的长度超过了Java安全策略所允许的最大值。具体来说: - **非法密钥大小...
如在加密过程中出现下面异常: java.security.InvalidKeyException:illegal Key Size 请将两个jar文件按下列操作完成: 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了...
为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行...然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.security.InvalidKeyException: Illegal key size。
今日遇到如下错误:java.security.InvalidKeyException: Illegal key size 因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 如果你计划使用 192 Bit 或者 256 Bit key, java complier 会抛出 Illegal key size ...
在调用企业微信通讯接口的时候,企业微信aes加密抛出了illegal key size异常,这个异常的原因是jdk jar包缺少lib导致的,不同jdk版本的jar包缺失不同,附件包含jdk6,jdk7,jdk8的jar包依赖,更新覆盖的时候,记得先...
在Java编程环境中,"java.security.InvalidKeyException: illegal Key Size" 是一个常见的错误,通常发生在加密或解密操作中。这个错误表示你试图使用的密钥长度超过了Java默认的安全限制。在给定的上下文中,这个...
4. SSH 架构中 Illegal attempt to associate a collection with two open sessions 问题 。 解决方法:使用 Hibernate 的 merge 方法代替 save、update 等方法。merge 方法可以把对象转变为托管状态的对象,而 ...
然而,在使用jQuery过程中,开发者有时会遇到JavaScript控制台抛出“Uncaught TypeError: Illegal invocation”错误。这个错误通常不是由jQuery自身引起的,而是与JavaScript作用域及上下文有关。 当我们进行Ajax...
前言 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段...date -j -f %a %b %d %T %Z %Y Sat Sep 29 11:33:00 CST 2018 +%s” 报错: Failed c
如果执行上面代码时出现了“java.security.InvalidKeyException: Illegal key size or default parameters ”或类似的错误提示,很可能是超出了JDK 默认的秘钥长度造成的。需要在oracle官网下载local_policy.jar 、...
java.security.InvalidKeyException: Illegal key size; JDK自带的密钥库长度有限制,特殊需求,需要到官网下载 jdk 无限制权限策略文件。 查看博客:https://blog.csdn.net/dling8/article/details/84061948 Java...
然而,开发者在实现这一功能时可能会遇到一些错误,如"Uncaught TypeError: Illegal invocation"。这个错误通常出现在尝试使用Ajax发送文件数据时,由于不正确的数据处理或内容类型设置导致的。 Ajax上传文件的核心...
'gbk' codec can't encode character '\U0001f370' in position 5: illegal multibyte sequence 去一看名字我懵逼了是个emoji???? 原来代码是这么写的 设置csv文件位UTF-8,代码改为 for i in b: persons = ...
F12看到后台报了个错误:Uncaught TypeError: Illegal invocation,百度了一下,找到了解决方法。 解决方法:在ajax请求的参数中添加如下两个参数: $.ajax({ ..., processData: false, contentType: false, .....
在使用C#与南大通用数据库(GBase)交互时,遇到的一个常见问题是尝试更新Blob或Clob(大型对象)时出现错误:“Illegal attempt to use Text/Byte host variable”。这个问题通常发生在利用CSDK中的ADO.NET驱动进行...
在Java编程中,`IllegalArgumentException` 是一个常见的运行时异常,属于`RuntimeException`的子类。这个异常通常在方法接收到不合法或不适当的参数时抛出。当一个方法需要接收特定类型的参数,而传入的参数明显不...