﻿<?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/sxyx2008/category/42861.html</link><description>温馨提示：您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!
</description><language>zh-cn</language><lastBuildDate>Tue, 02 Apr 2013 13:23:21 GMT</lastBuildDate><pubDate>Tue, 02 Apr 2013 13:23:21 GMT</pubDate><ttl>60</ttl><item><title>基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、DWR)</title><link>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 25 Sep 2012 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/388490.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/388490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/388490.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目基于maven3.0构建的，项目中融合了Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、Spring JDBC、Spring DWR。页面展现这里使用Struts1、Struts2、SpringMVC（jsp视图、velocity视图、freemarker视图、pdf视图、excel视图、xml视图、json视图等）。是一个综合性行的项目。该项目后期会陆续集成Spring的一些好的框架进来比如说Spring Web Flow、Spring Security 、Jbpm、WebService、Compass、Solr、nutch等。总之是一个综合性的项目。该项目不处理业务，主要是把目前自己工作中用到过的各种框架糅合到一个项目中。纯粹是一个jee框架的糅合，主要是介绍各种技术。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">介绍下目前使用的各个框架的版本信息</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts1 1.3.10</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts2 2.3.8</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring 3.2.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Hibernate 4.2.0.Final</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Ibatis 2.3.4.726</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">MyBatis 3.1.1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring Data JPA 1.3.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">DWR 3.0.M1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目中的持久化框架sql语句的跟踪采用了log4jdbc4结合log4j，在控制台可以看到完整的sql语句。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目中使用到的技术均与Spring已集成。除了DWR与Spring集成使用xml文件中配置bean外 其他的bean均使用注解完善。每一个与数据库有关的都有事务处理。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目结构图</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><img style="border-bottom: medium none; border-left: medium none; border-top: medium none; border-right: medium none" alt="" src="https://maven-framework-project.googlecode.com/files/project-map.jpg" /><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="orphans: auto; widows: auto;">项目托管SVN地址：</span><a href="http://maven-framework-project.googlecode.com/svn/trunk/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">http://maven-framework-project.googlecode.com/svn/trunk/</a>&nbsp;<span style="orphans: auto; widows: auto; color: #ff0000;">(限于大陆google code 不稳定,导致经常无法访问,该地址已不在同步,建议使用github地址)</span><br style="orphans: auto; widows: auto;" />
<span style="orphans: auto; widows: auto;">项目托管GitHub地址：</span><a href="https://github.com/sxyx2008/maven-framework-project/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">https://github.com/sxyx2008/maven-framework-project/</a><span style="orphans: auto; widows: auto; color: #ff0000;">（推荐使用）</span><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">最后希望有兴趣的朋友可以加入进来，大家一起完善他。把自己的技术分享出来。如有任何问题可以与我联系</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">联系方式</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">QQ：184675420</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Email：sxyx2008@gmail.com</p><img src ="http://www.blogjava.net/sxyx2008/aggbug/388490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2012-09-25 11:40 <a href="http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2、Spring、Hibernate、Lucene整合Compass实现搜索</title><link>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 26 May 2011 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/351109.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/351109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/351109.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;花时间尝试着写了个Struts2+Spring+Hibernate+Compass+Lucene整合的例子.代码和jar包较多，有兴趣的朋友可以去<a href="http://sshcompass.googlecode.com/svn/trunk/">http://sshcompass.googlecode.com/svn/trunk/</a>将工程捡下来。希望和大家一起探讨Compass这个框架。<br /></div> <img src ="http://www.blogjava.net/sxyx2008/aggbug/351109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2011-05-26 17:02 <a href="http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>持久化框架系列配置总结</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335497.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 13:41:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335497.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335497.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335497.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335497.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这一年多时间里，由于项目多半使用的是jdbc，很少使用到Hibernate、JPA、Ibatis等持久层框架。最多使用上spring的jdbcTemplate 久而久之，之前学习的这些持久层框架的映射配置忘的差不多了。借近期有时间，抽空复习了下以上三个持久层框架。现将项目中常用的映射关系的关联配置整理如下:<br />
JPA:<br />
<br />
<a title="JPA主键双向关联一对一映射" href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335081.html">JPA主键双向关联一对一映射</a><br />
<br />
<a title="JPA外键双向关联一对一映射" href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335173.html">JPA外键双向关联一对一映射</a><br />
<br />
</p>
<a title="JPA双向关联多对一映射" href="http://www.blogjava.net/sxyx2008/archive/2010/10/17/335361.html">JPA双向关联多对一映射</a><br />
<br />
<a title="JPA多对多双向关联" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335487.html">JPA多对多双向关联<br />
</a><br />
<br />
Hibernate:<br />
<br />
<a title="Hibernate一对一主键双向关联映射(xml配置)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335087.html">Hibernate一对一主键双向关联映射(xml配置)</a><br />
<br />
<a title="Hibernate一对一主键双向关联映射(Annotation配置) " href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html">Hibernate一对一主键双向关联映射(Annotation配置) </a><br />
<br />
<a title="Hibernate一对一外键双向关联(xml配置篇) " href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335454.html">Hibernate一对一外键双向关联(xml配置篇) </a><br />
<br />
<a title="Hibernate一对一外键双向关联(Annotation配置篇)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335456.html">Hibernate一对一外键双向关联(Annotation配置篇)</a><br />
<br />
<a title="Hibernate多对一双向关联(xml配置)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335461.html">Hibernate多对一双向关联(xml配置)</a><br />
<br />
<a title="Hibernate多对一双向关联(Annotation配置)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335462.html">Hibernate多对一双向关联(Annotation配置)</a><br />
<br />
<a title="Hibernate多对多双向关联(xml配置)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335489.html">Hibernate多对多双向关联(xml配置)</a><br />
<br />
<a title="Hibernate多对多双向关联(Annotation配置)" href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335490.html">Hibernate多对多双向关联(Annotation配置)</a><br />
<br />
<br />
使用Xdoclet和Ant构建Hibernate映射和配置文件<br />
<br />
<a title="使用Xdoclet和Ant构建Hibernate映射和配置文件 " href="http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html">使用Xdoclet和Ant构建Hibernate映射和配置文件 </a><br />
<br />
<br />
Ibatis<br />
<a title="使用ibatis完成持久化工作" href="http://www.blogjava.net/sxyx2008/archive/2010/10/13/335015.html">使用ibatis完成持久化工作</a><br />
<br />
<br />
ibatis陆续更新中。。。。。期待下篇ibatis多对一双向关联映射
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 21:41 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate多对多双向关联(Annotation配置)</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335490.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 13:15:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335490.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335490.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335490.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335490.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/many2many.jpg" width="591" height="330" /><br />
Role.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2many.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.CascadeType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.ManyToMany;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">roles</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_Many2Many</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Role&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@ManyToMany(mappedBy</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">roles</span><span style="color: #000000">"</span><span style="color: #000000">,cascade</span><span style="color: #000000">=</span><span style="color: #000000">CascadeType.ALL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getUsers()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setUsers(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;users)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.users&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
User.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2many.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.CascadeType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.JoinColumn;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.JoinTable;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.ManyToMany;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">users</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_Many2Many</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;User&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@ManyToMany(cascade</span><span style="color: #000000">=</span><span style="color: #000000">CascadeType.ALL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@JoinTable(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">user_role</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;joinColumns</span><span style="color: #000000">=</span><span style="color: #000000">@JoinColumn(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">user_id</span><span style="color: #000000">"</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inverseJoinColumns</span><span style="color: #000000">=</span><span style="color: #000000">@JoinColumn(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">role_id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getRoles()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setRoles(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.roles&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.roles&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.users&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role_id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">,&nbsp;role_id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK143BF46ADA6B394F&nbsp;(role_id),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK143BF46ADA6B394F&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(role_id)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.roles&nbsp;(id)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK143BF46A7F95FD2F&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK143BF46A7F95FD2F&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.users&nbsp;(id)</span></div>
<br />
测试代码<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;User();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Role();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role.setName(</span><span style="color: #000000">"</span><span style="color: #000000">管理员</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashSet</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roles.add(role);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setRoles(roles);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.persist(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.rollback();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user</span><span style="color: #000000">=</span><span style="color: #000000">(User)&nbsp;session.get(User.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(user.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles</span><span style="color: #000000">=</span><span style="color: #000000">user.getRoles();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;iterator&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;roles.iterator();&nbsp;iterator.hasNext();)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Role)&nbsp;iterator.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(role.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 21:15 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate多对多双向关联(xml配置)</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335489.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 13:06:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335489.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335489.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335489.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/many2many.jpg" width="591" height="330" /><br />
Role.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2many.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Role&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getUsers()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setUsers(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;users)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.users&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
User.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2many.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;User&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getRoles()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setRoles(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.roles&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;roles;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
映射文件<br />
Role.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.many2many.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Role"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="roles"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_Many2Many"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">set&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="users"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="user_role"</span><span style="color: #ff0000">&nbsp;cascade</span><span style="color: #0000ff">="all"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">column&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="role_id"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-many&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="user_id"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="User"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">set</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
User.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.many2many.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="User"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="users"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_Many2Many"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">set&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="roles"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="user_role"</span><span style="color: #ff0000">&nbsp;cascade</span><span style="color: #0000ff">="all"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">column&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="user_id"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-many&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="role_id"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="Role"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">set</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.roles&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.users&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role_id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">,&nbsp;role_id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK143BF46ADA6B394F&nbsp;(role_id),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK143BF46ADA6B394F&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(role_id)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.roles&nbsp;(id)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;user_role&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK143BF46A7F95FD2F&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK143BF46A7F95FD2F&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(</span><span style="color: #ff00ff">user_id</span><span style="color: #000000">)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2Many.users&nbsp;(id)<br />
</span></div>
<br />
测试代码<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;User();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Role();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role.setName(</span><span style="color: #000000">"</span><span style="color: #000000">管理员</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashSet</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roles.add(role);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setRoles(roles);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.persist(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.rollback();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user</span><span style="color: #000000">=</span><span style="color: #000000">(User)&nbsp;session.get(User.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(user.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;roles</span><span style="color: #000000">=</span><span style="color: #000000">user.getRoles();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">Role</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;iterator&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;roles.iterator();&nbsp;iterator.hasNext();)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Role)&nbsp;iterator.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(role.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 21:06 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate多对一双向关联(Annotation配置) </title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335462.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335462.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335462.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335462.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/many2one.jpg" width="856" height="181" /><br />
Department.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.OneToMany;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">department</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_Many2One</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Department&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@OneToMany(mappedBy</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">department</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getSets()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setSets(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;sets)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.sets&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
Employee.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.CascadeType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.JoinColumn;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.ManyToOne;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">employee</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_Many2One</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Employee&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Department&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@ManyToOne(cascade</span><span style="color: #000000">=</span><span style="color: #000000">CascadeType.ALL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@JoinColumn(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">deptid</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Department&nbsp;getDepartment()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setDepartment(Department&nbsp;department)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.department&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.department&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.employee&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deptid&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.employee&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK4722E6AE3829E242&nbsp;(deptid),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK4722E6AE3829E242&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(deptid)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2One.department&nbsp;(id)<br />
</span></div>
<br />
测试代码<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Department&nbsp;department</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Department();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;department.setName(</span><span style="color: #000000">"</span><span style="color: #000000">软件测试部</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Employee&nbsp;employee</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Employee();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.setDepartment(department);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(employee);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Employee&nbsp;employee</span><span style="color: #000000">=</span><span style="color: #000000">(Employee)&nbsp;session.get(Employee.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(employee.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(employee.getDepartment().getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 15:46 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate多对一双向关联(xml配置)</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335461.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335461.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335461.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335461.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/many2one.jpg" width="856" height="181" /><br />
Department.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Set;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Department&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getSets()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setSets(Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Employee</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;sets)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.sets&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sets;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
Employee.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.many2one.bean;<br />
<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Employee&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Department&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Department&nbsp;getDepartment()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setDepartment(Department&nbsp;department)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.department&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;department;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
映射文件<br />
Department.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.many2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Department"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="department"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_Many2One"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
Employee.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.many2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Employee"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="employee"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_Many2One"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="department"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="deptid"</span><span style="color: #ff0000">&nbsp;cascade</span><span style="color: #0000ff">="all"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.department&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.employee&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deptid&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_Many2One.employee&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK4722E6AE3829E242&nbsp;(deptid),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK4722E6AE3829E242&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(deptid)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_Many2One.department&nbsp;(id)</span></div>
<br />
测试代码<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Department&nbsp;department</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Department();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;department.setName(</span><span style="color: #000000">"</span><span style="color: #000000">软件测试部</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Employee&nbsp;employee</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Employee();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.setDepartment(department);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(employee);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Employee&nbsp;employee</span><span style="color: #000000">=</span><span style="color: #000000">(Employee)&nbsp;session.get(Employee.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(employee.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(employee.getDepartment().getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 15:40 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一外键双向关联(Annotation配置篇) </title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335456.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335456.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335456.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335456.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335456.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335456.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/one2onefk.jpg" width="726" height="155" /><br />
Husband.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.one2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.CascadeType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.OneToOne;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">husband</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_One2One_fk</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Husband&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Wife&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@OneToOne(cascade</span><span style="color: #000000">=</span><span style="color: #000000">CascadeType.ALL,mappedBy</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">husband</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Wife&nbsp;getWife()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setWife(Wife&nbsp;wife)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.wife&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
Wife.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.one2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.CascadeType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.JoinColumn;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.OneToOne;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">wife</span><span style="color: #000000">"</span><span style="color: #000000">,catalog</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Hibernate_One2One_fk</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Wife&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Husband&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@OneToOne(cascade</span><span style="color: #000000">=</span><span style="color: #000000">CascadeType.ALL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@JoinColumn(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">husband_id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Husband&nbsp;getHusband()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setHusband(Husband&nbsp;husband)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.husband&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
<br />
导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.husband&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.wife&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband_id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.wife&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK37AF119039AEDD&nbsp;(husband_id),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK37AF119039AEDD&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(husband_id)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.husband&nbsp;(id)<br />
</span></div>
<br />
测试代码<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;save(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Husband();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wife&nbsp;wife</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Wife();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setName(</span><span style="color: #000000">"</span><span style="color: #000000">如花</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setHusband(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(wife);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #000000">(Husband)&nbsp;session.get(Husband.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(husband.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(husband.getWife().getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 14:29 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一外键双向关联(xml配置篇)</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335454.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 18 Oct 2010 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335454.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335454.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/18/335454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335454.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/one2onefk.jpg" width="726" height="155" /><br />
Husband.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.one2one.bean;<br />
<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Husband&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Wife&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Wife&nbsp;getWife()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setWife(Wife&nbsp;wife)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.wife&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
Wife.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.one2one.bean;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Wife&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Husband&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Husband&nbsp;getHusband()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setHusband(Husband&nbsp;husband)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.husband&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
映射文件<br />
Husband.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.one2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Husband"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="husband"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_One2One_fk"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">one-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="wife"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="Wife"</span><span style="color: #ff0000">&nbsp;property-ref</span><span style="color: #0000ff">="husband"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
&lt;one-to-one name="wife" class="Wife" property-ref="husband"/&gt; property-ref后的husband为Wife中定义的husband属性<br />
Wife.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.one2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Wife"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="wife"</span><span style="color: #ff0000">&nbsp;catalog</span><span style="color: #0000ff">="Hibernate_One2One_fk"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="husband"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="husband_id"</span><span style="color: #ff0000">&nbsp;unique</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
&lt;many-to-one name="husband" column="husband_id" unique="true" /&gt;<br />
many-to-one的作用是在wife表中生成一个外键husband_id,且唯一,并参照husband表中的主键<br />
用hibernate的hbm2ddl导出的sql<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.husband&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.wife&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband_id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">unique</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.wife&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK37AF119039AEDD&nbsp;(husband_id),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK37AF119039AEDD&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(husband_id)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;Hibernate_One2One_fk.husband&nbsp;(id)</span></div>
<br />
测试示例<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;save(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Husband();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband.setName(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wife&nbsp;wife</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Wife();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setName(</span><span style="color: #000000">"</span><span style="color: #000000">如花</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setHusband(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(wife);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;select(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #000000">(Husband)&nbsp;session.get(Husband.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(husband.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(husband.getWife().getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-18 14:17 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/18/335454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist:</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/15/335225.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Fri, 15 Oct 2010 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/15/335225.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335225.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/15/335225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335225.html</trackback:ping><description><![CDATA[<p>Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist:<br />
此异常多出现在Hibernate、JPA级联映射中,在级联保存时频发<br />
从异常信息不难看出，在进行持久化的时候引用了一个未持久化的对象<br />
或者确定给对象已被持久化了,当再次去引用时，仍包此错误，那么只有一种可能，就是在配置文件里面级联配置的不正确尝试把cascade = CascadeType.ALL 改成 cascade=CascadeType.REFRESH 测一下看看。(适用于Hibernate注解或JPA的级联映射)</p>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-15 13:30 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/15/335225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一主键双向关联映射(Annotation配置) </title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 14 Oct 2010 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335093.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335093.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335093.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/jpaone2onepk.jpg" width="571" height="136" /><br />
实体<br />
Husband<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.hibernate.one2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.OneToOne;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.PrimaryKeyJoinColumn;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">husband</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Husband&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Wife&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy</span><span style="color: #000000">=</span><span style="color: #000000">GenerationType.AUTO)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@OneToOne<br />
&nbsp;&nbsp;&nbsp;&nbsp;@PrimaryKeyJoinColumn<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Wife&nbsp;getWife()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setWife(Wife&nbsp;wife)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.wife&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wife;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
Wife<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.hibernate.one2one.bean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.OneToOne;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.PrimaryKeyJoinColumn;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<br />
@Entity<br />
@Table(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">wife</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Wife&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Husband&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setId(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Column(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;@OneToOne(optional</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@PrimaryKeyJoinColumn<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Husband&nbsp;getHusband()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setHusband(Husband&nbsp;husband)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.husband&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;husband;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
温馨提示:注意wife.java里面的@OneToOne(optional=false)&nbsp;&nbsp; optional=false&nbsp; 属性会在wife这端添加一个外键约束<br />
添加上上述属性使用hbm2ddl导出表，打印出的sql语句<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;wife&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">drop</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;FK37AF11D67CB035<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">drop</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">exists</span><span style="color: #000000">&nbsp;husband<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">drop</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">exists</span><span style="color: #000000">&nbsp;wife<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;husband&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;wife&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">integer</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">255</span><span style="color: #000000">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">primary</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;wife&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">index</span><span style="color: #000000">&nbsp;FK37AF11D67CB035&nbsp;(id),&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">add</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">constraint</span><span style="color: #000000">&nbsp;FK37AF11D67CB035&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreign</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">key</span><span style="color: #000000">&nbsp;(id)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">references</span><span style="color: #000000">&nbsp;husband&nbsp;(id)</span></div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Husband();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband.setName(</span><span style="color: #000000">"</span><span style="color: #000000">小明</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wife&nbsp;wife</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Wife();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setName(</span><span style="color: #000000">"</span><span style="color: #000000">如花</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setHusband(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setId(husband.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(wife);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.rollback();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Husband();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband.setName(</span><span style="color: #000000">"</span><span style="color: #000000">小明</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wife&nbsp;wife</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Wife();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setName(</span><span style="color: #000000">"</span><span style="color: #000000">如花</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setHusband(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setId(husband.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(wife);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.rollback();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
温馨提醒:此处必须同时设置<br />
wife.setHusband(husband);<br />
wife.setId(husband.getId());<br />
否则报org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update <br />
<br />
<a title="示例程序" href="http://customer-lib.googlecode.com/files/one2one.zip">示例程序</a>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-14 10:28 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一主键双向关联映射(xml配置)</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335087.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 14 Oct 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335087.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/335087.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/14/335087.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/335087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/335087.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/jpaone2onepk.jpg" width="571" height="136" /><br />
<p>alter table wife <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drop <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign key FK37AF11D67CB035</p>
<p>&nbsp;&nbsp;&nbsp; drop table if exists husband</p>
<p>&nbsp;&nbsp;&nbsp; drop table if exists wife</p>
<p>&nbsp;&nbsp;&nbsp; create table husband (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id integer not null auto_increment,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name varchar(255),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary key (id)<br />
&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; create table wife (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id integer not null,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name varchar(255),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primary key (id)<br />
&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; alter table wife <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add index FK37AF11D67CB035 (id), <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add constraint FK37AF11D67CB035 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign key (id) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; references husband (id)</p>
实体<br />
Husband<br />
<br />
private int id;<br />
&nbsp;private String name;<br />
&nbsp;private Wife wife;<br />
<br />
Wife<br />
private int id;<br />
&nbsp;private String name;<br />
&nbsp;private Husband husband;<br />
<br />
Husband.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.hibernate.one2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Husband"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="husband"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="native"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">generator</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">one-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="wife"</span><span style="color: #ff0000">&nbsp;cascade</span><span style="color: #0000ff">="all"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="Wife"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">one-to-one</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
Wife.hbm.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.hibernate.one2one.bean"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Wife"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="wife"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="id"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">generator&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="foreign"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="property"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">husband</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">generator</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">one-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="husband"</span><span style="color: #ff0000">&nbsp;constrained</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">one-to-one</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Test<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;insert(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">HibernateSessionFactory.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;transaction</span><span style="color: #000000">=</span><span style="color: #000000">session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Husband&nbsp;husband</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Husband();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;husband.setName(</span><span style="color: #000000">"</span><span style="color: #000000">小明</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wife&nbsp;wife</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Wife();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setName(</span><span style="color: #000000">"</span><span style="color: #000000">如花</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wife.setHusband(husband);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(wife);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaction.rollback();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<br />
<a title="示例程序" href="http://customer-lib.googlecode.com/files/one2one.zip">示例程序</a>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/335087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-14 10:01 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/14/335087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate3.5之常见异常解决方案</title><link>http://www.blogjava.net/sxyx2008/archive/2010/10/09/334050.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Sat, 09 Oct 2010 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/10/09/334050.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/334050.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/10/09/334050.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/334050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/334050.html</trackback:ping><description><![CDATA[java.lang.NoSuchMethodError: javax.persistence.OneToOne.orphanRemoval()Z<br />
ejb3的jar包与JPA包冲突 ejb3的jar包删除就OK了<br />
<br />
java.lang.NoClassDefFoundError: javax/persistence/Cacheable<br />
错误原因，javax.persistence.Cacheable 是 JPA 2.0 规范中的东西！<br />
支持 JPA 2 的 Hibernate 实现 3.5 版目前还处于CR2 版本之中，还没有正式发布。<br />
需要在加入hibernate-distribution-3.5.0-Final\lib\jpa目录下的hibernate-jpa-2.0-api-1.0.0.Final.jar<br />
<br />
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder<br />
缺少slf4j-nop-1.5.8.jar
<img src ="http://www.blogjava.net/sxyx2008/aggbug/334050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-10-09 10:42 <a href="http://www.blogjava.net/sxyx2008/archive/2010/10/09/334050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Xdoclet和Ant构建Hibernate映射和配置文件</title><link>http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 30 Sep 2010 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/333554.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/333554.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/333554.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;使用Xdoclet和Ant构建Hibernate映射和配置文件温馨提示：由于文档中含大量图片，这里不方便一一上传建议下载本文电子版文档阅读Xdoclet.pdf本文工程下载svn地址:http://xdocletdemo.googlecode.com/svn/trunk/功能描述:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/333554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-09-30 16:03 <a href="http://www.blogjava.net/sxyx2008/archive/2010/09/30/333554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JPA注解</title><link>http://www.blogjava.net/sxyx2008/archive/2010/07/20/326601.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 20 Jul 2010 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/07/20/326601.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/326601.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/07/20/326601.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/326601.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/326601.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<p><span style="font-family: 'Courier New'">1</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Entity(name="EntityName")</span></p>
<p><span style="font-family: 宋体">必须</span><span style="font-family: 'Courier New'">,name</span><span style="font-family: 宋体">为可选</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">对应数据库中一的个表</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">2</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Table(name="",catalog="",schema="")</span></p>
<p><span style="font-family: 宋体">可选</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">通常和</span><span style="font-family: 'Courier New'">@Entity</span><span style="font-family: 宋体">配合使用</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">只能标注在实体的</span><span style="font-family: 'Courier New'">class</span><span style="font-family: 宋体">定义处</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">表示实体对应的数据库表的信息</span></p>
<p><span style="font-family: 'Courier New'">name:</span><span style="font-family: 宋体">可选</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">表示表的名称</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">默认地</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">表名和实体名称一致</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">只有在不一致的情况下才需要指定表名</span></p>
<p><span style="font-family: 'Courier New'">catalog:</span><span style="font-family: 宋体">可选</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">表示</span><span style="font-family: 'Courier New'">Catalog</span><span style="font-family: 宋体">名称</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">Catalog("").</span></p>
<p><span style="font-family: 'Courier New'">schema:</span><span style="font-family: 宋体">可选</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">表示</span><span style="font-family: 'Courier New'">Schema</span><span style="font-family: 宋体">名称</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">Schema("").</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">3</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@id</span></p>
<p><span style="font-family: 宋体">必须</span></p>
<p><span style="font-family: 'Courier New'">@id</span><span style="font-family: 宋体">定义了映射到数据库表的主键的属性</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">一个实体只能有一个属性被映射为主键</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">置于</span><span style="font-family: 'Courier New'">getXxxx()</span><span style="font-family: 宋体">前</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">4</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@GeneratedValue(strategy=GenerationType,generator="")</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">strategy:</span><span style="font-family: 宋体">表示主键生成策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">有</span><span style="font-family: 'Courier New'">AUTO,INDENTITY,SEQUENCE </span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'"> TABLE 4</span><span style="font-family: 宋体">种</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">分别表示让</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架自动选择</span><span style="font-family: 'Courier New'">,</span></p>
<p><span style="font-family: 宋体">根据数据库的</span><span style="font-family: 'Courier New'">Identity</span><span style="font-family: 宋体">字段生成</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">根据数据库表的</span><span style="font-family: 'Courier New'">Sequence</span><span style="font-family: 宋体">字段生成</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">以有根据一个额外的表生成主键</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">AUTO</span></p>
<p><span style="font-family: 'Courier New'">generator:</span><span style="font-family: 宋体">表示主键生成器的名称</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">这个属性通常和</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架相关</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">,Hibernate</span><span style="font-family: 宋体">可以指定</span><span style="font-family: 'Courier New'">uuid</span><span style="font-family: 宋体">等主键生成方式</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Id</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @GeneratedValues(strategy=StrategyType.SEQUENCE)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public int getPk() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return pk;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">5</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Basic(fetch=FetchType,optional=true)</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@Basic</span><span style="font-family: 宋体">表示一个简单的属性到数据库表的字段的映射</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">对于没有任何标注的</span><span style="font-family: 'Courier New'">getXxxx()</span><span style="font-family: 宋体">方法</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认即为</span><span style="font-family: 'Courier New'">@Basic</span></p>
<p><span style="font-family: 'Courier New'">fetch: </span><span style="font-family: 宋体">表示该属性的读取策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">有</span><span style="font-family: 'Courier New'">EAGER</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">LAZY</span><span style="font-family: 宋体">两种</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">分别表示主支抓取和延迟加载</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">EAGER.</span></p>
<p><span style="font-family: 'Courier New'">optional:</span><span style="font-family: 宋体">表示该属性是否允许为</span><span style="font-family: 'Courier New'">null,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">true</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Basic(optional=false)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public String getAddress() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return address;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">6</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Column</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@Column</span><span style="font-family: 宋体">描述了数据库表中该字段的详细定义</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">这对于根据</span><span style="font-family: 'Courier New'">JPA</span><span style="font-family: 宋体">注解生成数据库表结构的工具非常有作用</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">name:</span><span style="font-family: 宋体">表示数据库表中该字段的名称</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认情形属性名称一致</span></p>
<p><span style="font-family: 'Courier New'">nullable:</span><span style="font-family: 宋体">表示该字段是否允许为</span><span style="font-family: 'Courier New'">null,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">true</span></p>
<p><span style="font-family: 'Courier New'">unique:</span><span style="font-family: 宋体">表示该字段是否是唯一标识</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">false</span></p>
<p><span style="font-family: 'Courier New'">length:</span><span style="font-family: 宋体">表示该字段的大小</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">仅对</span><span style="font-family: 'Courier New'">String</span><span style="font-family: 宋体">类型的字段有效</span></p>
<p><span style="font-family: 'Courier New'">insertable:</span><span style="font-family: 宋体">表示在</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架执行插入操作时</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该字段是否应出现</span><span style="font-family: 'Courier New'">INSETRT</span><span style="font-family: 宋体">语句中</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">true</span></p>
<p><span style="font-family: 'Courier New'">updateable:</span><span style="font-family: 宋体">表示在</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架执行更新操作时</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该字段是否应该出现在</span><span style="font-family: 'Courier New'">UPDATE</span><span style="font-family: 宋体">语句中</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">true.</span><span style="font-family: 宋体">对于一经创建就不可以更改的字段</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该属性非常有用</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">如对于</span><span style="font-family: 'Courier New'">birthday</span><span style="font-family: 宋体">字段</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">columnDefinition:</span><span style="font-family: 宋体">表示该字段在数据库中的实际类型</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">通常</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架可以根据属性类型自动判断数据库中字段的类型</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">但是对于</span><span style="font-family: 'Courier New'">Date</span><span style="font-family: 宋体">类型仍无法确定数据库中字段类型究竟是</span><span style="font-family: 'Courier New'">DATE,TIME</span><span style="font-family: 宋体">还是</span><span style="font-family: 'Courier New'">TIMESTAMP.</span><span style="font-family: 宋体">此外</span><span style="font-family: 'Courier New'">,String</span><span style="font-family: 宋体">的默认映射类型为</span><span style="font-family: 'Courier New'">VARCHAR,</span><span style="font-family: 宋体">如果要将</span><span style="font-family: 'Courier New'">String</span><span style="font-family: 宋体">类型映射到特定数据库的</span><span style="font-family: 'Courier New'">BLOB</span><span style="font-family: 宋体">或</span><span style="font-family: 'Courier New'">TEXT</span><span style="font-family: 宋体">字段类型</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该属性非常有用</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Column(name="BIRTH",nullable="false",columnDefinition="DATE")</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public String getBithday() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return birthday;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">7</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Transient</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@Transient</span><span style="font-family: 宋体">表示该属性并非一个到数据库表的字段的映射</span><span style="font-family: 'Courier New'">,ORM</span><span style="font-family: 宋体">框架将忽略该属性</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">如果一个属性并非数据库表的字段映射</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">就务必将其标示为</span><span style="font-family: 'Courier New'">@Transient,</span><span style="font-family: 宋体">否则</span><span style="font-family: 'Courier New'">,ORM</span><span style="font-family: 宋体">框架默认其注解为</span><span style="font-family: 'Courier New'">@Basic</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">根据</span><span style="font-family: 'Courier New'">birth</span><span style="font-family: 宋体">计算出</span><span style="font-family: 'Courier New'">age</span><span style="font-family: 宋体">属性</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Transient</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public int getAge() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return getYear(new Date()) - getYear(birth);</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">8</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@ManyToOne(fetch=FetchType,cascade=CascadeType)</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@ManyToOne</span><span style="font-family: 宋体">表示一个多对一的映射</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该注解标注的属性通常是数据库表的外键</span></p>
<p><span style="font-family: 'Courier New'">optional:</span><span style="font-family: 宋体">是否允许该字段为</span><span style="font-family: 'Courier New'">null,</span><span style="font-family: 宋体">该属性应该根据数据库表的外键约束来确定</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">true</span></p>
<p><span style="font-family: 'Courier New'">fetch:</span><span style="font-family: 宋体">表示抓取策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">FetchType.EAGER</span></p>
<p><span style="font-family: 'Courier New'">cascade:</span><span style="font-family: 宋体">表示默认的级联操作策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">可以指定为</span><span style="font-family: 'Courier New'">ALL,PERSIST,MERGE,REFRESH</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">REMOVE</span><span style="font-family: 宋体">中的若干组合</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为无级联操作</span></p>
<p><span style="font-family: 'Courier New'">targetEntity:</span><span style="font-family: 宋体">表示该属性关联的实体类型</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">该属性通常不必指定</span><span style="font-family: 'Courier New'">,ORM</span><span style="font-family: 宋体">框架根据属性类型自动判断</span><span style="font-family: 'Courier New'">targetEntity.</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">订单</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">和用户</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">是一个</span><span style="font-family: 'Courier New'">ManyToOne</span><span style="font-family: 宋体">的关系</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">在</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">类中定义</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @ManyToOne()</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @JoinColumn(name="USER")</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public User getUser() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return user;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">9</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@JoinColumn </span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@JoinColumn</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">@Column</span><span style="font-family: 宋体">类似</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">介量描述的不是一个简单字段</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">而一一个关联字段</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">描述一个</span><span style="font-family: 'Courier New'">@ManyToOne</span><span style="font-family: 宋体">的字段</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">name:</span><span style="font-family: 宋体">该字段的名称</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">由于</span><span style="font-family: 'Courier New'">@JoinColumn</span><span style="font-family: 宋体">描述的是一个关联字段</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">如</span><span style="font-family: 'Courier New'">ManyToOne,</span><span style="font-family: 宋体">则默认的名称由其关联的实体决定</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">实体</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">有一个</span><span style="font-family: 'Courier New'">user</span><span style="font-family: 宋体">属性来关联实体</span><span style="font-family: 'Courier New'">User,</span><span style="font-family: 宋体">则</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">的</span><span style="font-family: 'Courier New'">user</span><span style="font-family: 宋体">属性为一个外键</span><span style="font-family: 'Courier New'">,</span></p>
<p><span style="font-family: 宋体">其默认的名称为实体</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">的名称</span><span style="font-family: 'Courier New'">+</span><span style="font-family: 宋体">下划线</span><span style="font-family: 'Courier New'">+</span><span style="font-family: 宋体">实体</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">的主键名称</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">见</span><span style="font-family: 'Courier New'">@ManyToOne</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">10</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@OneToMany(fetch=FetchType,cascade=CascadeType) </span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@OneToMany</span><span style="font-family: 宋体">描述一个一对多的关联</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">该属性应该为集体类型</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">在数据库中并没有实际字段</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">fetch:</span><span style="font-family: 宋体">表示抓取策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">FetchType.LAZY,</span><span style="font-family: 宋体">因为关联的多个对象通常不必从数据库预先读取到内存</span></p>
<p><span style="font-family: 'Courier New'">cascade:</span><span style="font-family: 宋体">表示级联操作策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">对于</span><span style="font-family: 'Courier New'">OneToMany</span><span style="font-family: 宋体">类型的关联非常重要</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">通常该实体更新或删除时</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">其关联的实体也应当被更新或删除</span></p>
<p><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">:</span><span style="font-family: 宋体">实体</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">是</span><span style="font-family: 'Courier New'">OneToMany</span><span style="font-family: 宋体">的关系</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">则实体</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">被删除时</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">其关联的实体</span><span style="font-family: 'Courier New'">Order</span><span style="font-family: 宋体">也应该被全部删除</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @OneTyMany(cascade=ALL)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public List getOrders() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return orders;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">11</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@OneToOne(fetch=FetchType,cascade=CascadeType)</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@OneToOne</span><span style="font-family: 宋体">描述一个一对一的关联</span></p>
<p><span style="font-family: 'Courier New'">fetch:</span><span style="font-family: 宋体">表示抓取策略</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">默认为</span><span style="font-family: 'Courier New'">FetchType.LAZY</span></p>
<p><span style="font-family: 'Courier New'">cascade:</span><span style="font-family: 宋体">表示级联操作策略</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @OneToOne(fetch=FetchType.LAZY)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public Blog getBlog() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return blog;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">12</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@ManyToMany</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@ManyToMany </span><span style="font-family: 宋体">描述一个多对多的关联</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">多对多关联上是两个一对多关联</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">但是在</span><span style="font-family: 'Courier New'">ManyToMany</span><span style="font-family: 宋体">描述中</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">中间表是由</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">框架自动处理</span></p>
<p><span style="font-family: 'Courier New'">targetEntity:</span><span style="font-family: 宋体">表示多对多关联的另一个实体类的全名</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">:package.Book.class</span></p>
<p><span style="font-family: 'Courier New'">mappedBy:</span><span style="font-family: 宋体">表示多对多关联的另一个实体类的对应集合属性名称</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; User</span><span style="font-family: 宋体">实体表示用户</span><span style="font-family: 'Courier New'">,Book</span><span style="font-family: 宋体">实体表示书籍</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">为了描述用户收藏的书籍</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">可以在</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">Book</span><span style="font-family: 宋体">之间建立</span><span style="font-family: 'Courier New'">ManyToMany</span><span style="font-family: 宋体">关联</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Entity</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class User {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List books;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ManyToMany(targetEntity=package.Book.class)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List getBooks() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return books;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setBooks(List books) {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.books=books;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Entity</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class Book {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List users;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ManyToMany(targetEntity=package.Users.class, mappedBy="books")</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List getUsers() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return users;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setUsers(List users) {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.users=users;</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 宋体">两个实体间相互关联的属性必须标记为</span><span style="font-family: 'Courier New'">@ManyToMany,</span><span style="font-family: 宋体">并相互指定</span><span style="font-family: 'Courier New'">targetEntity</span><span style="font-family: 宋体">属性</span><span style="font-family: 'Courier New'">,</span></p>
<p><span style="font-family: 宋体">需要注意的是</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">有且只有一个实体的</span><span style="font-family: 'Courier New'">@ManyToMany</span><span style="font-family: 宋体">注解需要指定</span><span style="font-family: 'Courier New'">mappedBy</span><span style="font-family: 宋体">属性</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">指向</span><span style="font-family: 'Courier New'">targetEntity</span><span style="font-family: 宋体">的集合属性名称</span></p>
<p><span style="font-family: 宋体">利用</span><span style="font-family: 'Courier New'">ORM</span><span style="font-family: 宋体">工具自动生成的表除了</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">Book</span><span style="font-family: 宋体">表外</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">还自动生成了一个</span><span style="font-family: 'Courier New'">User_Book</span><span style="font-family: 宋体">表</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">用于实现多对多关联</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">13</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@MappedSuperclass</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@MappedSuperclass</span><span style="font-family: 宋体">可以将超类的</span><span style="font-family: 'Courier New'">JPA</span><span style="font-family: 宋体">注解传递给子类</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">使子类能够继承超类的</span><span style="font-family: 'Courier New'">JPA</span><span style="font-family: 宋体">注解</span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @MappedSuperclass</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class Employee() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ....</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Entity</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class Engineer extends Employee {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .....</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Entity</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class Manager extends Employee {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .....</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">14</span><span style="font-family: 宋体">、</span><span style="font-family: 'Courier New'">@Embedded</span></p>
<p><span style="font-family: 宋体">可选</span></p>
<p><span style="font-family: 'Courier New'">@Embedded</span><span style="font-family: 宋体">将几个字段组合成一个类</span><span style="font-family: 'Courier New'">,</span><span style="font-family: 宋体">并作为整个</span><span style="font-family: 'Courier New'">Entity</span><span style="font-family: 宋体">的一个属性</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">例如</span><span style="font-family: 'Courier New'">User</span><span style="font-family: 宋体">包括</span><span style="font-family: 'Courier New'">id,name,city,street,zip</span><span style="font-family: 宋体">属性</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 宋体">我们希望</span><span style="font-family: 'Courier New'">city,street,zip</span><span style="font-family: 宋体">属性映射为</span><span style="font-family: 'Courier New'">Address</span><span style="font-family: 宋体">对象</span><span style="font-family: 'Courier New'">.</span><span style="font-family: 宋体">这样</span><span style="font-family: 'Courier New'">,User</span><span style="font-family: 宋体">对象将具有</span><span style="font-family: 'Courier New'">id,name</span><span style="font-family: 宋体">和</span><span style="font-family: 'Courier New'">address</span><span style="font-family: 宋体">这三个属性</span><span style="font-family: 'Courier New'">.</span></p>
<p><span style="font-family: 'Courier New'">Address</span><span style="font-family: 宋体">对象必须定义为</span><span style="font-family: 'Courier New'">@Embededable </span></p>
<p><span style="font-family: 宋体">示例</span><span style="font-family: 'Courier New'">:</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Embeddable</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class Address {city,street,zip}</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; @Entity</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; public class User {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Embedded</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Address getAddress() {</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..........</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">Hibernate</span><span style="font-family: 宋体">验证注解</span></p>
<p><span style="font-family: 宋体">注解</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">适用类型</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">说明</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">示例</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Pattern</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;String </span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">通过正则表达式来验证字符串</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@attern(regex=&#8221;[a-z]{6}&#8221;)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Length</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;String</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">验证字符串的长度</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@length(min=3,max=20)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Email</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;String</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">验证一个</span><span style="font-family: 'Courier New'">Email</span><span style="font-family: 宋体">地址是否有效</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@email</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Range</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;Long</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">验证一个整型是否在有效的范围内</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@Range(min=0,max=100)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Min</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;Long</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">验证一个整型必须不小于指定值</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@Min(value=10)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Max</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;Long</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">验证一个整型必须不大于指定值</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@Max(value=20)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 'Courier New'">@Size</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">集合或数组</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span><span style="font-family: 宋体">集合或数组的大小是否在指定范围内</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;@Size(min=1,max=255)</span></p>
<p><span style="font-family: 'Courier New'">&nbsp;</span></p>
<p><span style="font-family: 宋体">以上每个注解都可能性有一个</span><span style="font-family: 'Courier New'">message</span><span style="font-family: 宋体">属性，用于在验证失败后向用户返回的消息，还可以三个属性上使用多个注解</span></p>
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/326601.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-07-20 10:13 <a href="http://www.blogjava.net/sxyx2008/archive/2010/07/20/326601.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB异常分析及处理</title><link>http://www.blogjava.net/sxyx2008/archive/2009/11/25/303672.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 25 Nov 2009 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/11/25/303672.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/303672.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/11/25/303672.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/303672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/303672.html</trackback:ping><description><![CDATA[&nbsp;
<p>Hibernate <u><span style="font-family: 'Courier New'; color: navy; font-size: 9pt">org.hibernate.PropertyAccessException</span></u><span style="font-family: 'Courier New'; color: red; font-size: 9pt">: exception setting property value with CGLIB</span><span style="font-family: 宋体; font-size: 9pt">异常分析及处理</span></p>
<p><span style="font-family: 宋体">异常信息：</span></p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">Exception in thread "main" <u>org.hibernate.PropertyAccessException</u>: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.dl.bean.Employee.setDepartment</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(<u>PojoEntityTuplizer.java:215</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValues(<u>PojoEntityTuplizer.java:185</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(<u>AbstractEntityPersister.java:3232</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.engine.TwoPhaseLoad.initializeEntity(<u>TwoPhaseLoad.java:129</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.initializeEntitiesAndCollections(<u>Loader.java:842</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.doQuery(<u>Loader.java:717</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(<u>Loader.java:224</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.doList(<u>Loader.java:2145</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.listIgnoreQueryCache(<u>Loader.java:2029</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.Loader.list(<u>Loader.java:2024</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.loader.hql.QueryLoader.list(<u>QueryLoader.java:375</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.hql.ast.QueryTranslatorImpl.list(<u>QueryTranslatorImpl.java:308</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.engine.query.HQLQueryPlan.performList(<u>HQLQueryPlan.java:153</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.impl.SessionImpl.list(<u>SessionImpl.java:1106</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.impl.QueryImpl.list(<u>QueryImpl.java:79</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at com.dl.test.EmployeeTest.main(<u>EmployeeTest.java:26</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">Caused by: <u>net.sf.cglib.beans.BulkBeanException</u>: com.dl.bean.Employee cannot be cast to com.dl.bean.Department</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at com.dl.bean.Employee$$BulkBeanByCGLIB$$a415f505.setPropertyValues(&lt;generated&gt;)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(<u>PojoEntityTuplizer.java:212</u>)</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; ... 15 more</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 9pt">Caused by: <u>java.lang.ClassCastException</u>: com.dl.bean.Employee cannot be cast to com.dl.bean.Department</span></p>
            <p><span style="font-family: 'Courier New'; font-size: 9pt">&nbsp;&nbsp;&nbsp; ... 17 more</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">遇此异常很老火，当然第一件事就是在</span>google<span style="font-family: 宋体">上</span>baidu<span style="font-family: 宋体">一把看能解决吧</span>!</p>
<p>google<span style="font-family: 宋体">上</span>baidu<span style="font-family: 宋体">结果如下：</span></p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p><span style="font-family: 宋体; color: blue; font-size: 9pt">查询结果中包含</span><span style="color: blue; font-size: 9pt">null</span><span style="font-family: 宋体; color: blue; font-size: 9pt">的值，对于一些数字或</span><span style="color: blue; font-size: 9pt">boolean</span><span style="font-family: 宋体; color: blue; font-size: 9pt">包含</span><span style="color: blue; font-size: 9pt">null</span><span style="font-family: 宋体; color: blue; font-size: 9pt">，定义该项时必须使用</span><span style="color: blue; font-size: 9pt">wrapper</span><span style="font-family: 宋体; color: blue; font-size: 9pt">类型，而不能是</span><span style="color: blue; font-size: 9pt">primitive</span><span style="font-family: 宋体; color: blue; font-size: 9pt">类型，例如使用</span><span style="color: blue; font-size: 9pt">Integer</span><span style="font-family: 宋体; color: blue; font-size: 9pt">而不能是</span><span style="color: blue; font-size: 9pt">int,Boolean</span><span style="font-family: 宋体; color: blue; font-size: 9pt">而不能是</span><span style="color: blue; font-size: 9pt">boolean</span><span style="font-family: 宋体; color: blue; font-size: 9pt">否则会抛出</span><span style="color: blue; font-size: 9pt">exception</span></p>
            <p><span style="font-family: 宋体; color: blue; font-size: 9pt">结论是：对于属性在</span><span style="color: blue; font-size: 9pt">set/get</span><span style="font-family: 宋体; color: blue; font-size: 9pt">时</span><span style="color: blue; font-size: 9pt">,</span><span style="font-family: 宋体; color: blue; font-size: 9pt">属性值为</span><span style="color: blue; font-size: 9pt">null</span><span style="font-family: 宋体; color: blue; font-size: 9pt">而出现该异常</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体; font-size: 9pt">我对此种说法不敢苟同，既然</span><span style="font-size: 9pt">google</span><span style="font-family: 宋体; font-size: 9pt">上有这种说法相比就有它存在的道理。</span></p>
<p><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">从上述语句中我们得出结论：在写</span></strong><strong><span style="color: blue; font-size: 9pt">pojo</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">类时最好选用包装类而不使用</span></strong><strong><span style="color: blue; font-size: 9pt">java</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">中的基本数据类型，以免产生一些莫名其妙的错误</span></strong><strong><span style="color: blue; font-size: 9pt">(</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">建议使用</span></strong><strong><span style="color: blue; font-size: 9pt">5.0</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">以上的</span></strong><strong><span style="color: blue; font-size: 9pt">jdk</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">版本</span></strong><strong><span style="color: blue; font-size: 9pt">)</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">大家一直认为</span></strong><strong><span style="color: blue; font-size: 9pt">java</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">是面向对象的语言，这句话在</span></strong><strong><span style="color: blue; font-size: 9pt">jdk1.4</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">以前是有分歧的，大家都知道</span></strong><strong><span style="color: blue; font-size: 9pt">java</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">中</span></strong><strong><span style="color: blue; font-size: 9pt">8</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">个基本数据类型不是对象，所以这么说还不够严谨，直到</span></strong><strong><span style="color: blue; font-size: 9pt">jdk5.0</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">的诞生，这句话才勉强成立。我想这也是</span></strong><strong><span style="color: blue; font-size: 9pt">sun</span></strong><strong><span style="font-family: 宋体; color: blue; font-size: 9pt">公为什么极力推荐使用包装类的缘故。</span></strong></p>
<p><span style="font-family: 宋体; font-size: 9pt">看来还得自己分析这个异常，那么首先从映射文件及</span><span style="font-size: 9pt">pojo</span><span style="font-family: 宋体; font-size: 9pt">类来下手</span></p>
<p><span style="font-size: 9pt">Java</span><span style="font-family: 宋体; font-size: 9pt">代码：</span></p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Employee {</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Integer </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">id</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> String </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">empname</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Integer </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">empage</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> String </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">context</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Integer&nbsp;</span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">deptid</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">;</span></p>
            <p><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Department </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 9pt">department</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 9pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 9pt"> Department();</span></p>
            <p><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体; color: black; font-size: 9pt">省略</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">set()</span><span style="font-family: 宋体; color: black; font-size: 9pt">、</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">get()</span><span style="font-family: 宋体; color: black; font-size: 9pt">方法</span></p>
            <p><span style="font-family: 'Courier New'; font-size: 9pt">}</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">hibernate-mapping </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">package</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"com.dl.bean"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">class </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"Employee" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">table</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"employee"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">id </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"id" </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">generator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">class</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"native"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">id</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">property </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"empname"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">property </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"empage"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">property </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"context" </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">property </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"deptid" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">insert</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"false" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">update</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"false"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">many-to-one </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"department" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">column</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"deptid" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">cascade</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"all" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">class</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"Employee" </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span><span style="font-family: 'Courier New'; color: red; font-size: 9pt"> //</span><span style="font-family: 宋体; color: red; font-size: 9pt">此处为错误的根源，这个错误很隐蔽，不仔细检查很难发现</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">class</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">hibernate-mapping</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体; font-size: 9pt">不知道至此大家发现错误了没，经过本人仔细检查以及分析以上</span><span style="font-size: 9pt">pojo</span><span style="font-family: 宋体; font-size: 9pt">类及映射文件，发现在</span><span style="font-size: 9pt">&lt;many-to-one&gt;</span><span style="font-family: 宋体; font-size: 9pt">标签中</span><span style="font-size: 9pt">class</span><span style="font-family: 宋体; font-size: 9pt">属性配置出错了，正确的配置应为：</span></p>
<p><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">many-to-one </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"department" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">column</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"deptid" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">cascade</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"all" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">class</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"Department" </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">/&gt;</span><span style="font-family: 'Courier New'; font-size: 9pt">,</span><span style="font-family: 宋体; font-size: 9pt">到此问题彻底解决了</span><span style="font-family: 'Courier New'; font-size: 9pt">,</span><span style="font-family: 宋体; font-size: 9pt">没什么技术含量</span><span style="font-family: 'Courier New'; font-size: 9pt">,</span><span style="font-family: 宋体; font-size: 9pt">只是记下来</span><span style="font-family: 'Courier New'; font-size: 9pt">,</span><span style="font-family: 宋体; font-size: 9pt">防止更多人走冤枉路</span></p>
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/303672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-11-25 17:56 <a href="http://www.blogjava.net/sxyx2008/archive/2009/11/25/303672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 结合Hibernate 配置 C3P0 连接池</title><link>http://www.blogjava.net/sxyx2008/archive/2009/11/16/302557.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 16 Nov 2009 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/11/16/302557.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/302557.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/11/16/302557.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/302557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/302557.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: applicationContext.xml 文件：&lt;bean id="dataSource"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; class="com.mchange.v2.c3p0.ComboPooledDataSource"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; destroy-method="clo...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2009/11/16/302557.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/302557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-11-16 15:08 <a href="http://www.blogjava.net/sxyx2008/archive/2009/11/16/302557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>attempt to create saveOrUpdate event with null entity</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298821.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 19 Oct 2009 03:39:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298821.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/298821.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298821.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/298821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/298821.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">今天在写</span>struts2 save<span style="font-family: 宋体">的时候报了这么一个异常</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><u><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">java.lang.IllegalArgumentException</span></u><span style="font-size: 9pt; color: black; font-family: 'Courier New'">: attempt to create saveOrUpdate event with null entity</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; at org.hibernate.event.SaveOrUpdateEvent.&lt;init&gt;(</span><u><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">SaveOrUpdateEvent.java:40</span></u><span style="font-size: 9pt; color: black; font-family: 'Courier New'">)</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; at org.hibernate.event.SaveOrUpdateEvent.&lt;init&gt;(</span><u><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">SaveOrUpdateEvent.java:23</span></u><span style="font-size: 9pt; color: black; font-family: 'Courier New'">)</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; at org.hibernate.impl.SessionImpl.save(</span><u><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">SessionImpl.java:518</span></u><span style="font-size: 9pt; color: black; font-family: 'Courier New'">)</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; at org.hibernate.impl.SessionImpl.save(</span><u><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">SessionImpl.java:514</span></u><span style="font-size: 9pt; color: black; font-family: 'Courier New'">)</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">从上面的异常信息可以看出是在</span>Hibernate<span style="font-family: 宋体">进行</span>save<span style="font-family: 宋体">的时候检测到</span>bean<span style="font-family: 宋体">为</span>null</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">大致从这几个方面来分析原因：</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Hibernate(*.hbm.xml)<span style="font-family: 宋体">映射文件是否错误</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">3)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DAO<span style="font-family: 宋体">层代码是否错误</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">4)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">检查</span>Action<span style="font-family: 宋体">及视图层</span>jsp<span style="font-family: 宋体">页面等</span></p>
<p><span style="font-family: 宋体">从上面几个逐个检查后得出的结论为第四条</span></p>
<p><span style="font-family: 宋体">首先看</span>Action<span style="font-family: 宋体">中的代码</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-indent: 17.7pt; text-align: left" align="left"><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><span style="font-size: 9pt; color: black; font-family: 'Courier New'"> Employee </span><span style="font-size: 9pt; background: silver; color: #0000c0; font-family: 'Courier New'">employee</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 9pt; color: black; font-family: 'Courier New'"> Employee getEmployee() {</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 9pt; background: silver; color: #0000c0; font-family: 'Courier New'">employee</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 9pt; color: black; font-family: 'Courier New'"> setEmployee(Employee employee) {</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 9pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 9pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 9pt; background: silver; color: #0000c0; font-family: 'Courier New'">employee</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'"> = employee;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">这里</span><span style="font-size: 10pt; background: silver; color: #0000c0; font-family: 'Courier New'">employee</span><span style="font-size: 10pt; font-family: 宋体">是我们观察的重点</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">再看</span><span style="font-size: 10pt; font-family: 'Courier New'">jsp</span><span style="font-size: 10pt; font-family: 宋体">中的代码</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:form </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">action</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"saveEmployee.action"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"empName" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"empName"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"age" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"age"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"sex" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"sex"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"context" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"context"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:submit </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"</span><span style="font-size: 9pt; color: #2a00ff; font-family: 宋体">注册</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">theme</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"simple"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:submit</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:reset </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"</span><span style="font-size: 9pt; color: #2a00ff; font-family: 宋体">取消</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">theme</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"simple"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:reset</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:form</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-size: 10pt; font-family: 宋体">大家注意</span><span style="font-size: 10pt; font-family: 'Courier New'">&lt;s:textfield/&gt;</span><span style="font-size: 10pt; font-family: 宋体">中</span><span style="font-size: 10pt; color: red; font-family: 'Courier New'">name</span><span style="font-size: 10pt; font-family: 宋体">属性的值</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">很显然错误发生在此处修改如下即可：</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:form </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">action</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"saveEmployee.action"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"employee.empName" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"empName"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"employee.age" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"age"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"employee.sex" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"sex"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"employee.context" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">label</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"context" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">""</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:textfield</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:submit </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"</span><span style="font-size: 9pt; color: #2a00ff; font-family: 宋体">注册</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">theme</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"simple"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:submit</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:reset </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"</span><span style="font-size: 9pt; color: #2a00ff; font-family: 宋体">取消</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">theme</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"simple"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:reset</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">s:form</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">由此我们得出的结论是：</span></p>
<p><span style="font-family: 宋体">在</span>jsp<span style="font-family: 宋体">页面中一定要保持页面中各个控件的</span>name<span style="font-family: 宋体">属性与</span>Action<span style="font-family: 宋体">中模型驱动对象的名字一致否则就会报错</span></p>
  <img src ="http://www.blogjava.net/sxyx2008/aggbug/298821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-19 11:39 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/19/298821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>