﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-重明鸟-随笔分类-Hibernate</title><link>http://www.blogjava.net/allen-zhe/category/19070.html</link><description>&lt;script src="http://www.clocklink.com/embed.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" language="JavaScript"&gt;obj=new Object;obj.clockfile="5010-black.swf";obj.TimeZone="China_Beijing";obj.width=222;obj.height=66;obj.wmode="transparent";showClock(obj);&lt;/script&gt;

</description><language>zh-cn</language><lastBuildDate>Tue, 02 Feb 2010 09:00:58 GMT</lastBuildDate><pubDate>Tue, 02 Feb 2010 09:00:58 GMT</pubDate><ttl>60</ttl><item><title>Hibernate Cannot release connection 了，有办法解决！</title><link>http://www.blogjava.net/allen-zhe/archive/2010/02/02/311690.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Tue, 02 Feb 2010 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2010/02/02/311690.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/311690.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2010/02/02/311690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/311690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/311690.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 问题：&nbsp;&nbsp;&nbsp;&nbsp;系统采用Spring MVC 2.5 + Spring 2.5 + Hibernate 3.2架构，其中数据源连接池采用的是Apache commons DBCP。问题是这样的，系统运行一段时间后（大致每隔8小时），访问系统会出现如下错误，再次访问恢复正常。&nbsp;org.springframework.web.util.N...&nbsp;&nbsp;<a href='http://www.blogjava.net/allen-zhe/archive/2010/02/02/311690.html'>阅读全文</a><img src ="http://www.blogjava.net/allen-zhe/aggbug/311690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2010-02-02 16:38 <a href="http://www.blogjava.net/allen-zhe/archive/2010/02/02/311690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又見“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”！</title><link>http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Tue, 06 May 2008 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/198627.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/198627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/198627.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Keywords: Spring LOB<br>当我对Oracle数据库中的CLOB字段进入insert或update操作的时候，后台出现 java.sql.SQLException:   ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值。这个错误的特點是，当插入的数据长度小於1000字節或者大於2000字節時都不會報錯，一旦插入的数据长度在1000 ~ 2000之間時就會報錯。經過google一番之後，ORA-01461錯誤是一個經典問題了，有人認為是CLOB字段本身的問題，有人認為更換驅動即可解決這個問題。事實真的如此嗎？這裡給出了詳細的解決方法。&nbsp;&nbsp;<a href='http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html'>阅读全文</a><img src ="http://www.blogjava.net/allen-zhe/aggbug/198627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2008-05-06 10:30 <a href="http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Hibernate Annotations 维护多对多关系的心得</title><link>http://www.blogjava.net/allen-zhe/archive/2007/08/02/133991.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Thu, 02 Aug 2007 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/08/02/133991.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/133991.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/08/02/133991.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/133991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/133991.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Hibernate Annotations 维护多对多关系的心得，另提供一份中文版Hibernate Annotations Reference，供大家下载。&nbsp;&nbsp;<a href='http://www.blogjava.net/allen-zhe/archive/2007/08/02/133991.html'>阅读全文</a><img src ="http://www.blogjava.net/allen-zhe/aggbug/133991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-08-02 15:19 <a href="http://www.blogjava.net/allen-zhe/archive/2007/08/02/133991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate不听话了-- could not initialize proxy - the owning Session was closed </title><link>http://www.blogjava.net/allen-zhe/archive/2007/07/23/131927.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Mon, 23 Jul 2007 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/07/23/131927.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/131927.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/07/23/131927.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/131927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/131927.html</trackback:ping><description><![CDATA[
		<p>
				<strong>开发环境：</strong>
				<br />Struts 1.2 + Spring 1.2.8 + Hibernate 3.2<br /><br /><strong>遇到的问题：<br /></strong>org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed<br /> at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)<br /> at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)<br /> at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)<br /> at com.zhjy.gea.module.affair.domain.Affair$$EnhancerByCGLIB$$e10be950.getAffairCatalogs(&lt;generated&gt;)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br /> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br /> at java.lang.reflect.Method.invoke(Method.java:585)<br /> at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2049)<br /> at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1286)<br /> at org.apache.commons.beanutils.BeanUtilsBean.copyProperties(BeanUtilsBean.java:284)<br /> at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:137)</p>
		<p>
				<strong>分析原因：<br /></strong>由于Spring控制的Hibernate的生命周期只针对数据层和服务层，而未管理到表现层，所以会出现the owning Session was closed的现象。针对这一点，我通过hibernate filter的方式来解决。<br /><br /><strong>解决方法：<br /></strong>在web.xml中配置filter来解决。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #008000">&lt;!--</span>
				<span style="COLOR: #008000"> hibernate session filter </span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">hibernateFilter</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-class</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-class</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">hibernateFilter</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">url-pattern</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">*.do</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">url-pattern</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<br />
		<br />记于此处，望遇到同样问题的朋友，少走弯路。：）<br /><br />                                                                    <font color="#a52a2a"><strong>THE END</strong></font><img src ="http://www.blogjava.net/allen-zhe/aggbug/131927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-07-23 18:31 <a href="http://www.blogjava.net/allen-zhe/archive/2007/07/23/131927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate3.2中Ehcache的llegalAccessError</title><link>http://www.blogjava.net/allen-zhe/archive/2007/03/20/104880.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Tue, 20 Mar 2007 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/03/20/104880.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/104880.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/03/20/104880.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/104880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/104880.html</trackback:ping><description><![CDATA[
		<p>
				<strong>问题：<br /></strong>llegalAccessError: tried to access method net.sf.ehcache.CacheManager. ()V from class org.hibernate.cache.EhCacheProvider Caused by: java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.<br /><br /><strong>原因：</strong><br />由于ehcache的一个bug导致的结果<br /><br /><strong>解决方法：<br /></strong>需要把ehcache升级到1.2以上的版本</p>
<img src ="http://www.blogjava.net/allen-zhe/aggbug/104880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-03-20 09:58 <a href="http://www.blogjava.net/allen-zhe/archive/2007/03/20/104880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate中&lt;many-to-many&gt;双向关联加载排序的解决方案</title><link>http://www.blogjava.net/allen-zhe/archive/2007/01/18/94692.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Thu, 18 Jan 2007 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/01/18/94692.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/94692.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/01/18/94692.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/94692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/94692.html</trackback:ping><description><![CDATA[
		<div align="left">
				<font size="2">问题：Hibernate的&lt;many-to-many&gt;双向关联中，一方加载另一方时，怎么样达到按自定义规则排序的目的呢？<br /></font>
		</div>
		<div align="left">
				<font size="2">
						<br />实例：角色和菜单是多对多的关系，为角色分配菜单后，加载菜单时，我需要按照菜单的ID来排序显示。<br /></font>
		</div>
		<div align="left">
				<font size="2">
						<br />解决办法：</font>
		</div>
		<div align="left">
				<font size="2">1. 通过在hbm配置文件中配置解决，需要自定义比较器。</font>
		</div>
		<div align="left">
				<font size="2">  1) 在多对多的主控端指定<font color="#000080"><strong>sort</strong></font>属性</font>
		</div>
		<div align="left">
				<font size="2">  这里的主控端为role，受控端为menu。</font>
		</div>
		<div align="left">
				<font size="2">  role的配置为：<br />  
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">set </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="roleMenus"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="ROLE_MENU"</span><span style="COLOR: #ff0000"> inverse</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> sort</span><span style="COLOR: #0000ff">="menu.MenuComparator"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_ROLE_ROLE_ID"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_MENU_MENU_ID"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="domain.MenuInfoVO"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">set</span><span style="COLOR: #0000ff">&gt;</span></div><br />menu的配置为：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">set </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="roleMenus"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="ROLE_MENU"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_MENU_MENU_ID"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_ROLE_ROLE_ID"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="domain.RoleInfoVO"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">set</span><span style="COLOR: #0000ff">&gt;</span></div><br />2) 自定义<font color="#000080">MenuComparator</font><div align="left"><font size="2">  这里需要实现Comparator接口，自定义比较器<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_0_52_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_52_Open_Text.style.display='none'; Codehighlighter1_0_52_Closed_Image.style.display='inline'; Codehighlighter1_0_52_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_52_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_52_Closed_Text.style.display='none'; Codehighlighter1_0_52_Open_Image.style.display='inline'; Codehighlighter1_0_52_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_52_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_0_52_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 菜单排序比较器<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * MenuComparator<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * </span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000"> allen<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_104_667_Open_Image" onclick="this.style.display='none'; Codehighlighter1_104_667_Open_Text.style.display='none'; Codehighlighter1_104_667_Closed_Image.style.display='inline'; Codehighlighter1_104_667_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_104_667_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_667_Closed_Text.style.display='none'; Codehighlighter1_104_667_Open_Image.style.display='inline'; Codehighlighter1_104_667_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> MenuComparator </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> Comparator </span><span id="Codehighlighter1_104_667_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_104_667_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_115_222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_115_222_Open_Text.style.display='none'; Codehighlighter1_115_222_Closed_Image.style.display='inline'; Codehighlighter1_115_222_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_115_222_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_115_222_Closed_Text.style.display='none'; Codehighlighter1_115_222_Open_Image.style.display='inline'; Codehighlighter1_115_222_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_115_222_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_115_222_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 按照菜单的ID进行排序 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span><span style="COLOR: #808080">@see</span><span style="COLOR: #008000"> java.util.Comparator#compare(java.lang.Object, java.lang.Object)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_269_665_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_665_Open_Text.style.display='none'; Codehighlighter1_269_665_Closed_Image.style.display='inline'; Codehighlighter1_269_665_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_269_665_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_269_665_Closed_Text.style.display='none'; Codehighlighter1_269_665_Open_Image.style.display='inline'; Codehighlighter1_269_665_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> compare(Object o1, Object o2) </span><span id="Codehighlighter1_269_665_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_269_665_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_293_350_Open_Image" onclick="this.style.display='none'; Codehighlighter1_293_350_Open_Text.style.display='none'; Codehighlighter1_293_350_Closed_Image.style.display='inline'; Codehighlighter1_293_350_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_293_350_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_293_350_Closed_Text.style.display='none'; Codehighlighter1_293_350_Open_Image.style.display='inline'; Codehighlighter1_293_350_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o1 </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_293_350_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_293_350_Open_Text"><span style="COLOR: #000000">{   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (o2 </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> : </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000">   <br /><img id="Codehighlighter1_377_416_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_416_Open_Text.style.display='none'; Codehighlighter1_377_416_Closed_Image.style.display='inline'; Codehighlighter1_377_416_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_377_416_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_377_416_Closed_Text.style.display='none'; Codehighlighter1_377_416_Open_Image.style.display='inline'; Codehighlighter1_377_416_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o2 </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_377_416_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_377_416_Open_Text"><span style="COLOR: #000000">{   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> cc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_504_608_Open_Image" onclick="this.style.display='none'; Codehighlighter1_504_608_Open_Text.style.display='none'; Codehighlighter1_504_608_Closed_Image.style.display='inline'; Codehighlighter1_504_608_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_504_608_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_504_608_Closed_Text.style.display='none'; Codehighlighter1_504_608_Open_Image.style.display='inline'; Codehighlighter1_504_608_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (o1 </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> MenuInfoVO </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> o2 </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> MenuInfoVO) </span><span id="Codehighlighter1_504_608_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_504_608_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            cc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (((MenuInfoVO)o1).getId()).compareTo(((MenuInfoVO)o2).getId());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ((cc </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> : (cc </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> : </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />我在这里是以菜单的ID为排序关键字的，也可通过其他的诸如时间等进行排序，相当灵活，且代码量不大。<br /><br /><div align="left"><font size="2">2. 使用idbag为关系表增加一个主键。</font></div><div align="left"><font size="2"><font face="新宋体"></font></font> </div><div align="left"><font size="2"><font face="新宋体">&lt;<font style="BACKGROUND-COLOR: #407ec5" color="#ffffff">idbag</font>&gt;可以理解为</font>人工的id生成器，就好像是实体类一样！集合的每一行都有一个不同的人造关键字。但是，Hibernate没有提供任何机制来让你取得某个特定行的人造关键字。</font>注意<code class="literal">&lt;<font style="BACKGROUND-COLOR: #407ec5" color="#ffffff">idbag</font>&gt;</code>的更新性能要比普通的<code class="literal">&lt;bag&gt;</code>高得多！Hibernate可以有效的定位到不同的行，分别进行更新或删除工作，就如同处理一个list, map或者set一样。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">idbag </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="roleMenus"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="ROLE_MENU"</span><span style="COLOR: #ff0000"> order-by</span><span style="COLOR: #0000ff">="RM_MENU_MENU_ID desc"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">meta </span><span style="COLOR: #ff0000">attribute</span><span style="COLOR: #0000ff">="field-description"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">菜单列表</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">meta</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">collection-id </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="id"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="java.lang.Long"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">meta </span><span style="COLOR: #ff0000">attribute</span><span style="COLOR: #0000ff">="field-description"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">主键</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">meta</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">generator </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">collection-id</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_ROLE_ROLE_ID"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="RM_MENU_MENU_ID"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="domain.MenuInfoVO"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">idbag</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> </span></div><br />感觉第二个方法是按照我为角色配置菜单的顺序排序的，灵活性比较差，所以个人认为还是第一个方法比较好。</div></font></div></font>
		</div>
<img src ="http://www.blogjava.net/allen-zhe/aggbug/94692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-01-18 16:25 <a href="http://www.blogjava.net/allen-zhe/archive/2007/01/18/94692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate中双向关联的加载顺序问题</title><link>http://www.blogjava.net/allen-zhe/archive/2007/01/17/94461.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Wed, 17 Jan 2007 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/01/17/94461.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/94461.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/01/17/94461.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/94461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/94461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/allen-zhe/archive/2007/01/17/94461.html'>阅读全文</a><img src ="http://www.blogjava.net/allen-zhe/aggbug/94461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-01-17 17:27 <a href="http://www.blogjava.net/allen-zhe/archive/2007/01/17/94461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate大数据量操作解决方案</title><link>http://www.blogjava.net/allen-zhe/archive/2007/01/11/93207.html</link><dc:creator>小立飞刀</dc:creator><author>小立飞刀</author><pubDate>Thu, 11 Jan 2007 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/allen-zhe/archive/2007/01/11/93207.html</guid><wfw:comment>http://www.blogjava.net/allen-zhe/comments/93207.html</wfw:comment><comments>http://www.blogjava.net/allen-zhe/archive/2007/01/11/93207.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/allen-zhe/comments/commentRss/93207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/allen-zhe/services/trackbacks/93207.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用Hibernate进行大数据量操作，你是否遇到了同样的问题，进来一起研究一下吧 : - )&nbsp;&nbsp;<a href='http://www.blogjava.net/allen-zhe/archive/2007/01/11/93207.html'>阅读全文</a><img src ="http://www.blogjava.net/allen-zhe/aggbug/93207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/allen-zhe/" target="_blank">小立飞刀</a> 2007-01-11 17:12 <a href="http://www.blogjava.net/allen-zhe/archive/2007/01/11/93207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>