- 浏览: 295861 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
fanjf:
因为不是太懂,所以摘录!
DataStage---向目的库插入时出现问题:MLOG$ -
fanjf:
oracle 位图索引:位图索引: 解决某一表数据很多,但某一 ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
创建索引:CREATE TABLE mm (m1 CHAR(1 ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
查询mysql 的表emp 的约束:
SELECT * FR ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
为什么 update 不报错,结果为空?
关于MYSQL 检查check约束
net.sf.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already associated with the session: .........
今天遇到这样的报错异常,网上搜索答案,以下的代码逻辑就会出现该异常:
SessionFactory sessionFactory= new Configuration().configure().buildSessionFactory();
Session session=sessionFactory.openSession();
User user1=new User("anray");
User user2=new User("anray");
//假设User是一个持久对象,有一个name属性
user1.setName("anray1");
user2.setName("anray2");
session.update(user1);
session.update(user2);
这样的代码,我们一般不可能会这样写,但有时,我们回写一个专门的类来管理sessionFactory和session,如:
package com.cpic.p17.pf.dao;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
/**
* Hibernate DAO实现
* @author fanjf
* @date 2012-3-22
*/
public class HibernateDao {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex);
}
}
public static final ThreadLocal threadLocal = new ThreadLocal();
/** 得到当前线程的session */
public static final Session getSession() throws HibernateException {
Session se = (Session) threadLocal.get();
// Open a new Session, if this Thread has none yet
if (se == null) {
se = sessionFactory.openSession();
threadLocal.set(se);
}
return se;
}
/** 关闭当前线程的session */
public static final void closeSession() throws HibernateException {
Session s = (Session) threadLocal.get();
threadLocal.set(null);
if (s != null)
s.close();
}
/**
*保存一个对象到数据库中,使用完后要自己调用closeSession()
*/
public static void create(Object object) throws HibernateException {
Session session1 = getSession();
Transaction transaction1 = session1.beginTransaction();
try {
session1.save(object);
transaction1.commit();
} catch (HibernateException ex) {
if (transaction1 != null)
transaction1.rollback();
closeSession();
throw ex;
}
}
/**
*更新一个对象到数据库中,使用完后要自己调用closeSession()
*/
public static void update(Object object) throws HibernateException {
Session session1 = getSession();
Transaction transaction1 = session1.beginTransaction();
try {
session1.update(object);
transaction1.commit();
} catch (HibernateException ex) {
if (transaction1 != null)
transaction1.rollback();
closeSession();
throw ex;
}
}
}
如果在web编程时用这个类的方法来更新一个user对象,在调用了HibernateUse.update(user)后,没有接着调用HibernateUse.closeSession(),其实为了节省资源也不提倡每次操作都调用HibernateUse.closeSession()关闭session;如果对相同的user对象进行又一次的更新时,碰巧容器又分配了同一个thread进行处理,那么得到的也是同一个session,这样就出现了上面的提到了问题,session里的两个user的识别id一样,但内容不一样。
为了解决这个问题可以在update前清空session(不是关闭,这样资源消耗比较少),修改后的公用类如下:
(就是在update()方法里添加了session1.clear();)
/**
*更新一个对象到数据库中,使用完后要自己调用closeSession()
*/
public static void update(Object object) throws HibernateException {
Session session1 = getSession();
Transaction transaction1 = session1.beginTransaction();
try {
session1.clear();//更新对象前,清空session
session1.update(object);
transaction1.commit();
} catch (HibernateException ex) {
if (transaction1 != null)
transaction1.rollback();
closeSession();
throw ex;
}
}
发表评论
-
JAVA 统一追加扩展名类
2014-07-07 15:34 918最近有人反应某云盘,无法上传视频,我也倍受困扰,后来发现MD ... -
java中替换字符以及回车换行
2014-02-14 13:47 1828[java] view plaincopy 1. / ... -
[转]java中替换字符以及回车换行
2013-11-13 09:18 3310//第一种方式 import java.util.r ... -
Caused by: java.lang.OutOfMemoryError: PermGen space
2013-07-30 16:43 621Caused by: java.lang.OutOfMemo ... -
nested exception is java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长
2013-07-30 16:21 4115最近开发项目,跑批处理遇到一个问题: 2013-07-28 ... -
软件架构师必读书籍--------软件架构师推荐书籍系列
2012-09-23 17:02 4037一、架构篇 1. 《Softw ... -
【异常】Error configuring application listener of class xxx.xxx.xxx
2012-04-01 11:26 4695严重: Error configuring applicati ... -
Java复制、移动、删除、获取大小文件
2012-03-31 11:12 1734利用Apache Commons IO工具包(commons- ... -
Java中的Enum简单例子
2012-03-31 11:12 1286package com.util.enumclass; /* ... -
Java中的Enum的使用与分析
2012-03-30 11:28 853示例: package com.util.enumclass ... -
分享文件一个上传工具类
2012-03-30 10:57 877最近在搭建一个项目,需要用到很多通用的工具类,自己也写了几个。 ... -
缩放图片工具类,创建缩略图、伸缩图片比例
2012-03-30 10:54 773支持将Image的宽度、高度缩放到指定width、height ... -
Java创建、重命名、删除文件和文件夹
2012-03-30 10:52 1582package test.file; import java ... -
Java操作文件工具类
2012-03-30 10:48 1018JAVA API关于操作文件基础类太少,而且缺乏很多使 ... -
java获得实例对象的几种方法
2012-03-29 17:49 993// 1.new Dog d1 = new Dog ... -
Java虚拟机原理
2012-03-22 15:47 765一、什么是Java虚拟机 ... -
【异常】org.springframework.orm.hibernate3.HibernateQueryException
2012-03-20 10:44 2924今天新同事遇到一个异常,通过如下方法做一个单元测试: /** ... -
【异常】javax.imageio.IIOException: Can't get input stream from URL!
2012-03-19 11:42 9273Exception in thread "main& ... -
Error reading tld listeners java.lang.NullPointerException
2012-03-16 17:40 1523在学习【FreeMarker整合Spring 3.0】时把相应 ... -
Java中hashmap和hashtable的区别
2012-03-01 16:18 7391、 继承和实现区别 Hashtable是基于陈旧的D ...
相关推荐
JSON net.sf.json 依赖的jar包 亲测可用 一次导入所有jar包
net.sf.json.JSONObject相关依赖架包,导入项目后,JSONObject.fromObject()方法就可以使用了
解决net.sf.json.JSONObject 解决net.sf.json.JSONObject
net.sf.json.JSONObject所需要的jar包 commons-beanutils-1.9.3.jar commons-collections-3.2.2 commons-lang-2.6 commons-logging-1.2 ezmorph-1.0.6 json-lib-2.4-jdk15
net.sf.json需要的jar
Java中使用Json的net.sf.json包,其中包含JSONObject与JSONArray等操作类,十分好用。
net.sf.json.JSONObject相关jar包
net.sf.json.JSONArray等JSON类所需要的jar包组合。包括JSONObject等
net.sf.json.JSONObject需要的jar包 -- net.sf.json.JSONObject需要的jar包
Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常)所需要的java 包
阿里fastjson和谷歌net.sf.json(三种)
java开发中需要jsonObject,jsonArray需要用到6个jar包,net.sf.json.JSONObject commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-...
Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常),在json使用中我们经常会遇到net.sf.ezmorph.MorpherRegistry异常,这些jar包就是为了解决这个问题
net.sf.json jar包包含了一下:可以用来解析json,具体操作可以看小编的博客。 commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar
Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常
net.sf.jadclipse_3.3.0.jar下载地址
在用到net.sf.json的时候有时候会因为缺少依赖库而报错,此时可以试试这个包
net.sf.json依赖jar包,其中包括: commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-2.4-jdk15.jar
net.sf.json使用的lib(包括依赖lib) 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar
JSON转化时出现 java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry