ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产高清,国产视频精选在线,国产在线视频欧美一区二区三区http://www.aygfsteel.com/AstroQi/category/42391.htmlI'm Astro Qi. If call me, please send email to closoastroqi@126.comzh-cnFri, 22 Apr 2011 08:26:57 GMTFri, 22 Apr 2011 08:26:57 GMT60- hibernateé›†åˆæ˜ å°„cascadeå’Œinverse详解http://www.aygfsteel.com/AstroQi/archive/2011/04/22/348779.htmlAstro.QiAstro.QiFri, 22 Apr 2011 02:51:00 GMThttp://www.aygfsteel.com/AstroQi/archive/2011/04/22/348779.htmlhttp://www.aygfsteel.com/AstroQi/comments/348779.htmlhttp://www.aygfsteel.com/AstroQi/archive/2011/04/22/348779.html#Feedback0http://www.aygfsteel.com/AstroQi/comments/commentRss/348779.htmlhttp://www.aygfsteel.com/AstroQi/services/trackbacks/348779.html阅读全文

]]> - Hibernateä¸cascade与inverse属性详è§?/title><link>http://www.aygfsteel.com/AstroQi/archive/2011/04/22/348777.html</link><dc:creator>Astro.Qi</dc:creator><author>Astro.Qi</author><pubDate>Fri, 22 Apr 2011 02:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/AstroQi/archive/2011/04/22/348777.html</guid><wfw:comment>http://www.aygfsteel.com/AstroQi/comments/348777.html</wfw:comment><comments>http://www.aygfsteel.com/AstroQi/archive/2011/04/22/348777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/AstroQi/comments/commentRss/348777.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/AstroQi/services/trackbacks/348777.html</trackback:ping><description><![CDATA[<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">在å¦ä¹ Hibernate的过½E‹ä¸æœ€ä¸å¥½ç†è§£çš„就是这两个属性了ã€?br style="line-height: normal; " />
(我当åˆå¦ä¹ Hibernate的时候,å‘现¾|‘上介绘q™ä¸¤ä¸ªå±žæ€§çš„æ–‡ç« 倒是ä¸å°‘åQŒä½†æ˜¯ï¼Œå±…然有好多都是è{帖。。。还有的ž®±æ˜¯ 照书æ¬~~-_-!!!)。。ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">æ®ä¸ªä¾‹ååQšä¹¦ä¸Šè¯´inverse=falseæ—Óž¼Œç”׃¸»æŽ§æ–¹¾l´æŒå…³ç³»ã€‚。ã€?br style="line-height: normal; " />
ç”׃ºŽæˆ‘也是åˆå¦è€…。。。å†åŠ ä¸Šè¯æ–‡æ°´åã^å低。。。ä¸ç†è§£“¾l´æŒå…³ç³»æ˜¯å•¥æ„æ€?#8221;å›§~</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">æç¤ºåQ?br style="line-height: normal; " />
(1)如果åQ𿂍ä¸äº†è§£Hibernateçš„one-to-many或many-to-one的概å¿üc€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">(2)如果åQšä½ ä¸äº†è§£Hibernateçš?#8220;自由æ€?#8221;“æŒä¹…æ€?#8221;“游离æ€?#8221;的概å¿üc€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">(3)如果åQ𿂍ä¸äº†è§£Hibernateä¸çš„“è„æ•°æ?#8221;的概å¿üc€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">(4)如果åQ𿂍坹Hibernateä¸Session¾~“å˜åQŒæ²¡æœ‰åˆæ¥äº†è§£çš„è¯ã€?br style="line-height: normal; " />
(在Hibernateä¸è°ƒç”¨save˜q›è¡Œå˜å‚¨æ•°æ®çš„æ—¶å€?òq¶ä¸æ˜¯é©¬ä¸Šå°±å¯ÒŽ•°æ®åº“˜q›è¡Œinsertæ“作åQŒè€Œæ˜¯ä¼šå°†å…?#8220;æ•°æ®å¯¹è±¡(vo)”¾U›_…¥Hibernateçš„Session¾~“å˜ã€?</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">在上é¢çš„4æ¡æ½CÞZ¸åQŒå¦‚果您对其ä¸çš„æŸä¸€æ¡ï¼Œä¸æ˜¯å¾ˆæ¸…楚的è¯ã€‚希望请先了解有关知识ã€?br style="line-height: normal; " />
å¦åˆ™åQŒå¯èƒ½æ‚¨ž®?“æ— æ³•æˆ–å¾ˆéš?#8221;ç†è§£ cascade æˆ?inverse ˜q?个属性ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">首相åQŒcascade ä¸?inverse ˜q™ä¸¤ä¸ªå±žæ€§ï¼Œå…¶å®žæ˜¯å®Œå…¨ä¸åŒçš„两个东西åQŒæƒ³è¦äº†è§£ä»–们å„自的“用途与区别”åQŒè¯¦è§å¦‚下介¾l:</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">˜q™é‡Œæœ‰ä¸¤ä¸ªè¡¨:</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">åQ?åQ‰class (ççñ”è¡?<br style="line-height: normal; " />
ç›¸åº”å—æ®µåQ?br style="line-height: normal; " />
cid varchar(32) 主键 not-null (ççñ”id)<br style="line-height: normal; " />
cname varchar(16) not-null (ççñ”åç§°) <br style="line-height: normal; " />
<br style="line-height: normal; " />
åQ?åQ‰student (å¦ç”Ÿè¡?<br style="line-height: normal; " />
ç›¸åº”å—æ®µåQ?br style="line-height: normal; " />
sid varchar(32) 主键 not-null (å¦ç”Ÿid)<br style="line-height: normal; " />
sname varchar(16) not-null (å¦ç”Ÿå§“å)<br style="line-height: normal; " />
class_id varchar(32) not-null (å¦ç”Ÿæ‰€å±žç¾U?</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">一个ç¾U?class)对应多个å¦ç”Ÿ(student)åQŒæ‰€ä»¥ç¾U§è¡¨(class)ž®±æ˜¯“one-to-many”ç«?br style="line-height: normal; " />
å之studentž®±æ˜¯many-to-one</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">//--------Class¾cÈš„代ç --------<br style="line-height: normal; " />
public class Class implements.....<br style="line-height: normal; " />
{<br style="line-height: normal; " />
private cId = "";<br style="line-height: normal; " />
private cName = "";<br style="line-height: normal; " />
private students = java.util.HashMap();<br style="line-height: normal; " />
// çœç•¥å¯¹åº”çš?geter setter<br style="line-height: normal; " />
}<br style="line-height: normal; " />
//--------Class.hbm.xml--------<br style="line-height: normal; " />
<hibernate-mapping><br style="line-height: normal; " />
<class name="lcx.vo.Class" table="class"<br style="line-height: normal; " />
catalog="demo"><br style="line-height: normal; " />
<id name="cid" type="java.lang.String"><br style="line-height: normal; " />
<column name="cid" length="32" /><br style="line-height: normal; " />
<generator class="uuid.hex" /><br style="line-height: normal; " />
</id><br style="line-height: normal; " />
<property name="name" type="java.lang.String"><br style="line-height: normal; " />
<column name="cname" length="16" not-null="true" /><br style="line-height: normal; " />
</property><br style="line-height: normal; " />
<br style="line-height: normal; " />
<set name="students" table="student" cascade="save-update"><br style="line-height: normal; " />
<key column="class" /><br style="line-height: normal; " />
<one-to-many class="lcx.vo.Student" /><br style="line-height: normal; " />
</set> <br style="line-height: normal; " />
</class><br style="line-height: normal; " />
</hibernate-mapping></span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">//--------Student¾cÈš„代ç ;*******<br style="line-height: normal; " />
public class Student implements.....<br style="line-height: normal; " />
{<br style="line-height: normal; " />
private sId = "";<br style="line-height: normal; " />
private sName = "";<br style="line-height: normal; " />
private Class class = null;<br style="line-height: normal; " />
// çœç•¥å¯¹åº”çš?geter setter<br style="line-height: normal; " />
}<br style="line-height: normal; " />
// Student.hbm.xml<br style="line-height: normal; " />
<hibernate-mapping><br style="line-height: normal; " />
<class name="lcx.vo.Student" table="student" catalog="demo"><br style="line-height: normal; " />
<id name="cid" type="java.lang.String"><br style="line-height: normal; " />
<column name="sid" length="32" /><br style="line-height: normal; " />
<generator class="uuid.hex" /><br style="line-height: normal; " />
</id><br style="line-height: normal; " />
<many-to-one name="class" <br style="line-height: normal; " />
class="lcx.vo.Class"<br style="line-height: normal; " />
column="class_id" <br style="line-height: normal; " />
not-null="true" <br style="line-height: normal; " />
/> <br style="line-height: normal; " />
</class><br style="line-height: normal; " />
</hibernate-mapping></span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">åQˆä¸€åQ?cascade 的介¾l:<br style="line-height: normal; " />
当HibernateæŒä¹…化一ä¸?#8220;临时对象(也å«è‡ªç”±æ€å¯¹è±?”æ—Óž¼Œåœ¨é»˜è®¤çš„æƒ…况ä¸?å»I¼šæ²¡æœ‰è®„¡½®cascade属性或cascade=noneæ—?åQŒHibernateä¸ä¼šè‡ªåЍ“æŒä¹…化他所兌™””的其他äÍæ—¶å¯¹è±¡ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">上题q™äº›è¯æ˜¯ä»€ä¹ˆæ„æ€å‘¢åQ?什么å«ä¸ä¼šè‡ªåЍ “æŒä¹…åŒ?#8221;å…Œ™”çš„äÍæ—¶å¯¹è±¡å‘¢åQ?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">看如下代ç :</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">// 创å¾ä¸€ä¸?临时对象(也å«è‡ªç”±æ€å¯¹è±? <br style="line-height: normal; " />
// 也就是说˜q™ä¸ª class 没有被Hibernate¾U›_…¥Session¾~“å˜½Ž¡ç†ã€?br style="line-height: normal; " />
Class class = new Class();<br style="line-height: normal; " />
//class.id 䏸™‡ªåŠ¨ç”Ÿæˆ?br style="line-height: normal; " />
class.setName("一òq´çñ”1ç?);</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">Student stu = new Student();<br style="line-height: normal; " />
//student.id 䏸™‡ªåŠ¨ç”Ÿæˆ?br style="line-height: normal; " />
stu.setName("ž®ç™½å…?);<br style="line-height: normal; " />
stu.setClass(class);</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">// 关键ž®±æ˜¯˜q™é‡Œã€‚。ã€?br style="line-height: normal; " />
class.getStudents().add(stu);</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">session.save(class);<br style="line-height: normal; " />
// æäº¤</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">// 注æ„: Class.hbm.xmlæ–‡äšgä¸?cascade="save-update"òq¶ä¸”也没有设¾|®inverse属æ€?也就是说inverse=false;<br style="line-height: normal; " />
// æ¤æ—¶å¦‚æžœä½ å¼€å¯äº†Hibernate的显½CºHQLè¯å¥åŠŸèƒ½åQŒé‚£ä¹ˆæŽ§åˆ¶å°ž®†ä¼šæ˜„¡¤ºå¦‚下3æ¡HQLåQ?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">//----------------------------------------********<br style="line-height: normal; " />
insert into demo.class (cid, cname) values (66666666666666666666666666666666, 一òq´çñ”1ç?<br style="line-height: normal; " />
insert into demo.student (sid,sname,class_id) values (8888888888888888811cb2e04c888888, ž®ç™½å…? 66666666666666666666666666666666)<br style="line-height: normal; " />
update demo.student set class_id=66666666666666666666666666666666 where sid=8888888888888888811cb2e04c888888<br style="line-height: normal; " />
//----------------------------------------********</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">那么ä¸ÞZ»€ä¹ˆä¼šå‡ºçްåQŒè¿™3æ¡HQLè¯å¥å‘¢ï¼Œæˆ‘们æ¥ä¸€ä¸€åˆ†æžä¸€ä¸‹ï¼š</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">½W?æ¡HQLè¯å¥:<br style="line-height: normal; " />
其实½W¬ä¸€æ¡HQL比较好ç†è§£ï¼Œ<br style="line-height: normal; " />
当我们调ç”?session.save(class) åŽï¼Œåœ¨Hibernate˜q›è¡Œæäº¤çš„æ—¶å€™ï¼Œ<br style="line-height: normal; " />
会å‘çŽ?#8220;æœ?#8221;一æ?#8220;æ–?#8221;的数æ®è¦æ’å…¥(insert)åQŒæ‰€ä»¥å°±å¾€class表ä¸,æ’å…¥äº†è¿™æ¡æ–°çš„class记录ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">½W?æ¡HQLè¯å¥åQ?br style="line-height: normal; " />
注æ„问题ž®±åœ¨˜q™é‡ŒåQ?br style="line-height: normal; " />
˜q™é‡Œä¸ÞZ»€ä¹ˆåˆå‡ºçŽ°äº†ä¸€æ¡insertè¯å¥å‘¢ï¼Ÿè€Œä¸”˜q˜æ˜¯å‘studentè¡¨ä¸æ’入数æ®ã€?br style="line-height: normal; " />
我们在上é¢çš„代ç ä¸ï¼Œòq¶æ²¡æœ‰ç¼–写类ä¼?#8220;session.save(student)”˜q™æ ·çš„è¯å¥å•Šã€?br style="line-height: normal; " />
˜q™æ˜¯ä¸ÞZ»€ä¹ˆå‘¢åQ?br style="line-height: normal; " />
å…¶å®žåŽŸå› åQŒæ˜¯˜q™ä¹ˆå›žäº‹åQšå› 为我们在class端,讄¡½®äº?¾U§è”æ›´æ–°"(å?cascade="save-update")åQ?br style="line-height: normal; " />
也就是说åQŒå½“Hibernate在å‘classè¡¨ä¸æ’å…¥“æ–?#8221;对象记录æ—Óž¼Œä¼šæ£€æŸ?#8220;Class对象”所兌™”的属æ€?ž®±æ˜¯<set>对应的属æ€?åQŒæ˜¯å¦å‘生过å˜åŒ–åQŒå¦‚æžœå‘生了å˜åŒ–åQŒå°±æŒ‰ç…§“¾U§è”属æ€?cascade)”所讑֮šçš„内å®?br style="line-height: normal; " />
˜q›è¡Œæ“作ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">上é¢è®²çš„˜q™å¥è¯åˆ°åº•æ˜¯ä»€ä¹ˆæ„æ€å‘¢åQ?br style="line-height: normal; " />
ç”¨ä½ ä»?#8220;äº?#8221;è¯è¯´åQŒå°±æ˜¯ï¼š<br style="line-height: normal; " />
å› äØ“è°ƒç”¨äº?class.getStudents().add(stu);<br style="line-height: normal; " />
所以,在Hibernate在进行æ’å…?class对象的时候,å‘现class对象åQŒæ‰€å…Œ™”的集åˆä¸åQŒæœ‰ä¸€æ?br style="line-height: normal; " />
“自由æ€?#8221;的对象,而åˆå› 䨓class端设¾|®äº†“¾U§è”属性cascade”åQŒæ‰€ä»¥ï¼Œåœ¨æ’入这æ?“æ–°class对象”æ—Óž¼Œä¹Ÿä¸€åŒæŠŠä»–内部的那些åQŒè¿˜å±žäºŽ“自由æ€?#8221;çš„å…¶ä»–å¯¹è±¡ï¼Œä¹Ÿä¸€åŒæ’入到åQŒä»–们所对应的表ä¸åŽ»äº†ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">˜q˜æ˜¯ä¸æ˜Žç™½çš„è¯ã€‚。。å¯ä»¥çœ‹çœ‹ã€‚å™å«ç´çš„《精通Hibernate》,在书上的½W?49™å‰|œ‰ã€?br style="line-height: normal; " />
但是关于inverse的介¾l。。。写的就有些书é¢åŒ–了åQŒå¦‚æžœè¯æ–‡ä¸å¥½çš„è¯ã€‚。。就难懂咯~</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">½W?æ¡HQLè¯å¥åQ?br style="line-height: normal; " />
½W¬ä¸‰æ¡HQLè¯å¥æ˜¯ä¸€æ¡updateè¯å¥åQŒæ˜¯ä¸æ˜¯è§‰å¾—åQŒå¾ˆèŽ«å其妙。。。ã€?br style="line-height: normal; " />
Hibernate大脑˜q›æ°´äº†å§åQŒæ€Žä¹ˆåƒé¥±äº†æ’‘得,é‡å¤æ›´æ–°è®°å½•啊啊啊啊å•?br style="line-height: normal; " />
å‡å¦‚åQšæˆ‘ä»¬æŠŠ class端的é…置文档ä¸çš„ invser属性设¾|®äØ“true(å»I¼šinverse=true)<br style="line-height: normal; " />
在执行上é¢çš„½E‹åºåQŒå‘玎ͼŒž®±å˜æˆ?æ¡insertè¯å¥å•¦ã€‚。。。ã€?update没啦。。ã€?<br style="line-height: normal; " />
看楽W¬ä¸‰æ¡çš„updateè¯å¥å’Œinverse有ç€å¯†åˆ‡çš„å…³¾p»ï¼ˆä»–两有一腿~åQ‰ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">所以我们下边,ž®±æ¥ä»‹ç»ä¸€ä¸‹inverse属æ€?</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">当调ç”?Class.getStudents().add(stu)æ–ÒŽ³•åQŒè¿›è¡Œæ·»åŠ æ“作时åQ?nbsp;<br style="line-height: normal; " />
(å»I¼šå?"˜q™ä¸ªClass对象"所属的“é›†åˆ (也就是调用getStudentsæ–ÒŽ³•所˜q”回的那个Set集åˆ)”䏿·»åŠ ä¸€ä¸ªStudent(å?add(stu))åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œ˜q™ä¸ª“æ–?#8221;æ·ÕdŠ çš„Student对象(stu)åQ?nbsp;<br style="line-height: normal; " />
ä»–çš„Student.class_idå—æ®µ“å¿…é¡»”åQŒè¦½{‰äºŽ“è¢«æ·»åŠ æ–¹Class”的主é”?å?Class.cid)ã€?nbsp;<br style="line-height: normal; " />
ä»?#8220;æ•°æ®åº?#8221;层颿¥è®²åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œ˜q™ä¸ª“æ–?#8221;æ·ÕdŠ çš?#8220;Student”çš„class_idå—æ®µåQŒå¿…™å»è¦ä¸?#8220;Class”çš„cidå—æ®µåQŒå˜åœ?ä¸Õd¤–键关è?ã€?</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">æ£å› 为如æ¤ï¼šæ‰€ä»¥Hibernate“æ€?#8221; 在进è¡?"Class.getStudents().add(stu)" ˜q™æ ·çš„æ“ä½œæ—¶åQ?nbsp;<br style="line-height: normal; " />
出现æ„外情况(å¦? stu.getClass=nullåQŒå³åQšstu没有所属ç¾U?åQ?br style="line-height: normal; " />
å?#8220;æ·ÕdŠ æ–?#8221;(Student)ä¸?#8220;è¢«æ·»åŠ æ–¹”(Class)åQŒå˜åœ?#8220;外键”ä¸ä¸€è‡´çš„æƒ…况å‘生ã€?nbsp;<br style="line-height: normal; " />
所以就出现äº?é‚£æ¡å¤šä½™çš„updateè¯å¥ã€‚å³åQšone-to-manyåQˆClass端)ä¸ÕdЍåŽÈ»´æŠ¤Child.Class_id <br style="line-height: normal; " />
所以就是说åQŒHibernate怕出错,ž®Þq»™ä½ 多执行一‹Æ¡æ— 用的更新è¯å¥åQŒä»¥ä¿è¯ add åˆ?Class“集刔ä¸çš„æ‰€æœ‰Student<br style="line-height: normal; " />
都是è¦ä¸ŽClass有外键关è”çš„ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">用普通è¯è¯´å°±æ˜?<br style="line-height: normal; " />
一òq?ç?getStudents().add(ž®ç™½å…?;<br style="line-height: normal; " />
一òq?ç?getStudents().add(大白å…?;</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">也就是说现在ä¸ç®¡æ˜?ž®ç™½å…?˜q˜æ˜¯ 大白å…?nbsp;<br style="line-height: normal; " />
如果他们åQŒç›®å‰è¿˜æ²¡æœ‰è‡ªå·±çš„ç¾U§çš„è¯ï¼Œ<br style="line-height: normal; " />
一òq?ççš„ç主ä»Õd°±ä¼šä¸»åŠ¨é‚€è¯·ä»–ä»¬æˆä¸ÞZ¸€òq?ççš„åŒå¦å•¦~ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">也就是说 一òq?ççš„ç主ä»?ä¸ÕdЍ邀è¯?åŒå¦åQŒè€Œä¸æ˜?åŒå¦è‡ªå·±æ¥~~~ 所以效率也é™ä½Žäº†ã€‚。。ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">所以我们一般把 一对多ç«?invser讄¡½®ä¸ºtrueåQŒå³åQšä¸è®©ä¸»æŽ§ç«¯åŽÈ»´æŠ¤ä¸»é”®å…³è”,<br style="line-height: normal; " />
åQˆå³åQšè®©åŒå¦è‡ªå·±åŽÀL‰¾ççñ”åQ?br style="line-height: normal; " />
说白了,ž®±æ˜¯åQŒone-to-many端ä¸ç”¨åŽ»½Ž¡ç† “æ–°æ·»åŠ å¯¹è±?#8221; 的主外键¾U¦æŸé—®é¢˜ã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">把one-to-many端(å?classç«?çš„invser讄¡½®ä¸ºtrue<br style="line-height: normal; " />
(å»I¼šæ¯æ¬¡å‘class.getStudents˜q™ä¸ªé›†åˆä¸æ·»åŠ?studentæ—Óž¼Œä¸åŽ»ä¸ÕdЍupdate对应的外é”?åQ?br style="line-height: normal; " />
而是在student端去手动讄¡½®<br style="line-height: normal; " />
例如åQ?br style="line-height: normal; " />
student.setClass(class);<br style="line-height: normal; " />
session.save(student);<br style="line-height: normal; " />
˜q™æ ·æ‰‹åŠ¨è®„¡½® student与classå…Œ™”啦。。。ã€?br style="line-height: normal; " />
所以上é¢çš„½E‹åº“最å¥?#8221;˜q˜æ˜¯å†™æˆ˜q™æ ·åQ?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">Class class = new Class();<br style="line-height: normal; " />
class.setName("一òq´çñ”1ç?);<br style="line-height: normal; " />
session.save(class);</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">Student stu = new Student();<br style="line-height: normal; " />
stu.setName("ž®ç™½å…?);<br style="line-height: normal; " />
stu.setClass(class);<br style="line-height: normal; " />
session.save(class);</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">/*<br style="line-height: normal; " />
æ¤æ—¶å‘class集åˆadd内容åQŒä¸ä¼šè¿›è¡Œæ•°æ®åº“æ“作(update)ã€?br style="line-height: normal; " />
“æ›´æ–°”çš„åªæ˜¯session¾~“å˜ä¸ï¼Œæ•°æ®é•œåƒã€?br style="line-height: normal; " />
˜q™æ ·åšçš„好处是:ä¸ä»…å‡å°‘了updateè¯å¥åQ?br style="line-height: normal; " />
而且åQŒåŒæ—¶ä¹Ÿæ›´æ–°äº†session¾~“å˜ã€?br style="line-height: normal; " />
------------------------<br style="line-height: normal; " />
而在原æ¥:<br style="line-height: normal; " />
one-to-many端inverse=falseæ—Óž¼Œè™½ç„¶ä¹Ÿæ›´æ–°seesion¾~“å˜ä¸çš„class集åˆåQ?br style="line-height: normal; " />
但是有å´åˆå¤šä½™update<br style="line-height: normal; " />
*/<br style="line-height: normal; " />
class.getStudents().add(stu);<br style="line-height: normal; " />
// æäº¤</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">æ€È»“:<br style="line-height: normal; " />
当inverse=false òq¶ä¸”å‘one-to-many端的兌™”集åˆåQŒæ·»åŠ?#8220;新对è±?å? 自由æ€å¯¹è±?” æ—Óž¼Œ<br style="line-height: normal; " />
Hibernatež®×ƒ¼šè‡ªåЍåQŒåŽ»updateé‚?#8220;个刚刚到æ¥çš„” “自由æ€å¯¹è±?#8221;的外键ã€?br style="line-height: normal; " />
åQˆå¦‚æžœä½ å‘,one-to-many端添的集åˆä¸åQŒadd一ä¸?#8220;å·²ç»æŒä¹…化了的对è±?#8221;åQŒé‚£ž®×ƒ¸ä¼šå‡ºçްupdateäº?å› äØ“å·²ç»æŒä¹…化过äº?åQŒé™¤éžï¼Œä½ 去 更改“那个æŒä¹…化对è±?#8221;所对应的外键。。。那æ ïLš„è¯ã€‚。。呵呵呵~~~<br style="line-height: normal; " />
ä½ å¯ä»¥è¯•一试,应该ä¸ä¼šæŠ¥é”™åQŒä½ å¯ä»¥å½“åš¾lƒä¹ åŽÕdšä¸€ä¸‹ï¼ŒåŠ æ·±cascadeå’Œinverse˜q™ä¸¤ä¸ªå±žæ€§çš„ç†è§£åQ?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><br style="line-height: normal; " />
<span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">// 如果看懂了上é¢çš„内容。æ¥çœ‹ä¸€ä¸‹ï¼Œä¸‹é¢çš„东è¥Ñ€?br style="line-height: normal; " />
å‡å¦‚åQŒå°†one-to-manyç«?å?Classç«?çš?hbm.xml 文档ä¸çš„cascade¿U»é™¤æŽ?或把cascade="none"ã€?br style="line-height: normal; " />
那么上é¢çš„代ç 会出现什么情况呢ã€?br style="line-height: normal; " />
¾l“果会出çŽ?æ¡HQLåQŒå’Œä¸€å †Exception</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">insert into demo.class (cid, cname) values (66666666666666666666666666666666, 一òq´çñ”1ç?<br style="line-height: normal; " />
update demo.student set class_id=66666666666666666666666666666666 where sid=8888888888888888811cb2e04c888888<br style="line-height: normal; " />
Hibernate Exceptinon......................................</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">相比较cascade被设¾|?save-update"的时候,¾~ºå°‘äº?æ?insertè¯å¥åQŒè€Œä¸”也多了一些Exceptionã€?/span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">那么åQŒåˆ°åº•是ž®‘了å“?æ¡insertè¯å¥å‘¢ï¼Ÿ<br style="line-height: normal; " />
ž®±æ˜¯˜q™æ¡åQ?br style="line-height: normal; " />
insert into demo.student (sid,sname,class_id) values (8888888888888888811cb2e04c888888, ž®ç™½å…? 66666666666666666666666666666666)</span></span></span></span></span></span></p>
<p style="line-height: normal; color: #666666; font-family: Arial; font-size: 12px; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 14pt; "><span style="line-height: normal; font-size: 10pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 12pt; "><span style="line-height: normal; font-size: 10pt; ">之所以会出现åQŒè¿™æ ïLš„现象åQŒæƒ³å¿…æ‚¨å·²ç»æ—©å°±çœ‹å‡ºæ¥äº†ã€?br style="line-height: normal; " />
å› äØ“åQŒæˆ‘没有讄¡½®Class端的CascadeåQŒæ‰€ä»¥åœ¨save(class)的时候,òq¶æ²¡æœ‰è‡ªåŠ¨å°†å…¶æ‰€å…Œ™”çš?#8220;自由æ€å¯¹è±?#8221;˜q›è¡ŒæŒä¹…化æ“作ã€?br style="line-height: normal; " />
然而,åˆå› ä¸?Class端的inverse=falseåQŒæ‰€ä»¥ï¼ŒClass会自动去¾l´æŒåQŒé‚£ä¸?“æ–°æ¥çš„student” 的外键ã€?br style="line-height: normal; " />
所以会出现åQŒæ²¡æœ‰insertž®Þp¦update啦。。。ã€?br style="line-height: normal; " />
ç„¶åŽåœ¨å°±æ˜¯Exceptionäº?/span></span></span></span></span></span></p>
<img src ="http://www.aygfsteel.com/AstroQi/aggbug/348777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AstroQi/" target="_blank">Astro.Qi</a> 2011-04-22 10:47 <a href="http://www.aygfsteel.com/AstroQi/archive/2011/04/22/348777.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Hibernate自定义表å•完全解å†Ïx–¹æ¡?æ— éœ€é‡ç½®SessionFactory)http://www.aygfsteel.com/AstroQi/archive/2009/10/26/299764.htmlAstro.QiAstro.QiMon, 26 Oct 2009 05:16:00 GMThttp://www.aygfsteel.com/AstroQi/archive/2009/10/26/299764.htmlhttp://www.aygfsteel.com/AstroQi/comments/299764.htmlhttp://www.aygfsteel.com/AstroQi/archive/2009/10/26/299764.html#Feedback1http://www.aygfsteel.com/AstroQi/comments/commentRss/299764.htmlhttp://www.aygfsteel.com/AstroQi/services/trackbacks/299764.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
¹àÔÆÏØ|
»ª³ØÏØ|
Ðãɽ|
Æ½Ì¶ÏØ|
ÐËÒåÊÐ|
ÒæÑôÊÐ|
Î÷ºÍÏØ|
·ð¸ÔÏØ|
ÖÜÄþÏØ|
ÓÀ¿µÊÐ|
»ªÝöÊÐ|
Á¬Æ½ÏØ|
ÑôÐÂÏØ|
Ì«ºþÏØ|
´ÈϪÊÐ|
°¢°Í¸ÂÆì|
Á°Ô´ÊÐ|
кÍÏØ|
ºÍÕþÏØ|
ÁèÔ´ÊÐ|
ÎߺþÊÐ|
ÕòÄþ|
½Î÷Ê¡|
ÊÙ¹âÊÐ|
¸ßÇå|
Æô¶«ÊÐ|
¬ÁúÏØ|
ÕòÔÏØ|
º£ÄþÊÐ|
½ðÏçÏØ|
Îä³ÇÏØ|
аͶû»¢×óÆì|
º¼½õÆì|
ºÓ±±Ê¡|
µç°×ÏØ|
¶¼ÔÈÊÐ|
¹þÃÜÊÐ|
¹ÅÕÉÏØ|
ÈýËëÏØ|
ÈêÄÏÏØ|
³Ç¹ÌÏØ|