<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>夜半难眠 &#187; hiberate</title>
	<atom:link href="http://www.havenliu.com/tag/hiberate/feed" rel="self" type="application/rss+xml" />
	<link>http://www.havenliu.com</link>
	<description>记录点生活的无奈</description>
	<lastBuildDate>Thu, 29 Dec 2011 03:25:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>再次遇到a different object with the same identifier value was already associated with the session错误</title>
		<link>http://www.havenliu.com/java/12.html</link>
		<comments>http://www.havenliu.com/java/12.html#comments</comments>
		<pubDate>Wed, 03 Jun 2009 04:24:15 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[hiberate]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=12</guid>
		<description><![CDATA[这错误以前遇到过一次，我是这样解决的：
正常情况一般调用hiberate端方法进行数据库操作时，是直接调用 getHibernateTemplate().update(user);，但在hibernate中同一个session里面有了两个相同标识但是是 不同实体时就会出现如标题的错误，在网上找来如下解决方法，错误是解决了，但不完美：
public void update(User user) {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
session.clear();
session.update(user);
}
这 样在session.update(user)后如果还有其他对数据库的save或update并且是在同一个事务中，后面的操作可能就会无效，具体原因 没查出来，可能是getcurrentSession()获取的是“当前”session,调用getcurrentSession()时“当前 ”session被从hibernate中剥离，所以导致了后面的操作无效。
如果是struts+hibernate+spring框架下面有个很简单的方法：直接调用getHibernateTemplate().merge(user)。一切搞定！
相关文章2010年10月22日 -- java生成复杂word文档的完美解决方案2009年07月2日 -- Java生成XML文档的基本操作]]></description>
			<content:encoded><![CDATA[<p>这错误以前遇到过一次，我是这样解决的：<br />
正常情况一般调用hiberate端方法进行数据库操作时，是直接调用 getHibernateTemplate().update(user);，但在hibernate中同一个session里面有了两个相同标识但是是 不同实体时就会出现如标题的错误，在网上找来如下解决方法，错误是解决了，但不完美：<br />
public void update(User user) {</p>
<p>Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();<br />
session.clear();<br />
session.update(user);</p>
<p>}<br />
这 样在session.update(user)后如果还有其他对数据库的save或update并且是在同一个事务中，后面的操作可能就会无效，具体原因 没查出来，可能是getcurrentSession()获取的是“当前”session,调用getcurrentSession()时“当前 ”session被从hibernate中剥离，所以导致了后面的操作无效。<br />
如果是struts+hibernate+spring框架下面有个很简单的方法：直接调用getHibernateTemplate().merge(user)。一切搞定！</p>
<div style="float:left;margin:0px 0px 0px 0px;"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-url="http://www.havenliu.com/java/12.html"></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年10月22日 -- <a href="http://www.havenliu.com/java/514.html" title="java生成复杂word文档的完美解决方案">java生成复杂word文档的完美解决方案</a></li><li>2009年07月2日 -- <a href="http://www.havenliu.com/java/92.html" title="Java生成XML文档的基本操作">Java生成XML文档的基本操作</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/java/12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

