﻿<?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-java技术-随笔分类-jpa</title><link>http://www.blogjava.net/fuhoujun/category/34952.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 03 Oct 2008 14:44:29 GMT</lastBuildDate><pubDate>Fri, 03 Oct 2008 14:44:29 GMT</pubDate><ttl>60</ttl><item><title>HQL多对多的查询语句</title><link>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232230.html</link><dc:creator>付厚俊</dc:creator><author>付厚俊</author><pubDate>Fri, 03 Oct 2008 10:26:00 GMT</pubDate><guid>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232230.html</guid><wfw:comment>http://www.blogjava.net/fuhoujun/comments/232230.html</wfw:comment><comments>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fuhoujun/comments/commentRss/232230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fuhoujun/services/trackbacks/232230.html</trackback:ping><description><![CDATA[<p>一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有. <br />
要查询教拥有书"a"的学生的老师!</p>
<p>Hql语句：</p>
<p>SELECT t FROM Teacher t join t.students s join s.books b where b.name = 'a'&nbsp;</p>
<p>解释：t.students s中s并不是集合的意思,而是t的students对象的表别名,join t.students s这个hql,hibernate会翻译成两个表的内连接关系 </p>
<p>错误写法：</p>
<p>SELECT t FROM teacher t where t.students.books.name = 'a'&nbsp;</p>
<p>其实道理是很显然的,t.students是一个Set,那么这个Set怎么可能有books这样的属性呢?同理books.name也不对,所以使用表间连接并给出别名t.students s,此时的对象s才有books属性,所以可以写s.books b,最后使用b.name限制查询b.name = 'a'.&nbsp;</p>
<p>另外一种写法：</p>
<p>SELECT t FROM Teacher t,Student s,Book b where s.id in elements(t.students) and b.id in elements(s.books) <br />
这种方法没有出错!不过这种方式要用子查询!</p>
<img src ="http://www.blogjava.net/fuhoujun/aggbug/232230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fuhoujun/" target="_blank">付厚俊</a> 2008-10-03 18:26 <a href="http://www.blogjava.net/fuhoujun/archive/2008/10/03/232230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 2.0 中配置 JPA</title><link>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232207.html</link><dc:creator>付厚俊</dc:creator><author>付厚俊</author><pubDate>Fri, 03 Oct 2008 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232207.html</guid><wfw:comment>http://www.blogjava.net/fuhoujun/comments/232207.html</wfw:comment><comments>http://www.blogjava.net/fuhoujun/archive/2008/10/03/232207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fuhoujun/comments/commentRss/232207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fuhoujun/services/trackbacks/232207.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spring 2.0 中&nbsp;初始化设置     保证你使用的是Java 5 (EJB 3.0 中 JPA 的先决条件).    从 https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html 下载 glassfish JPA jar (注意: 我使用的是 &#8220;V2_bu...&nbsp;&nbsp;<a href='http://www.blogjava.net/fuhoujun/archive/2008/10/03/232207.html'>阅读全文</a><img src ="http://www.blogjava.net/fuhoujun/aggbug/232207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fuhoujun/" target="_blank">付厚俊</a> 2008-10-03 15:01 <a href="http://www.blogjava.net/fuhoujun/archive/2008/10/03/232207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>