<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A</id>
	<title>Hibernate笔记 5：实体关联关系：一对多 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A"/>
	<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;action=history"/>
	<updated>2026-05-15T15:54:38Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6027&amp;oldid=prev</id>
		<title>Eijux：​/* 关于 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6027&amp;oldid=prev"/>
		<updated>2022-06-27T04:45:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;关于&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年6月27日 (一) 12:45的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot;&gt;第42行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第42行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  无论其采用何种方式维护关联关系，其数据库中表关系是一定的。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  无论其采用何种方式维护关联关系，其数据库中表关系是一定的。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [[File:Hibernate：实体关系：一对多.png|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;400px&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [[File:Hibernate：实体关系：一对多.png|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;600px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关系维护 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关系维护 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6023&amp;oldid=prev</id>
		<title>2022年6月27日 (一) 04:33 Eijux</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6023&amp;oldid=prev"/>
		<updated>2022-06-27T04:33:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年6月27日 (一) 12:33的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l128&quot;&gt;第128行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第128行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 注意：“lkm_cust_id”为“cst_linkMan”表的外键（参照于“cst_customer”表）。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 注意：“lkm_cust_id”为“cst_linkMan”表的外键（参照于“cst_customer”表）。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;双向关联：一对多/多对一 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;双向关联 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;示例：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;示例：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 在“Customer”中：维护其关联的“LinkMan”集合；&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 在“Customer”中：维护其关联的“LinkMan”集合；&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6022&amp;oldid=prev</id>
		<title>Eijux：​/* 关于 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6022&amp;oldid=prev"/>
		<updated>2022-06-27T04:32:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;关于&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年6月27日 (一) 12:32的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l45&quot;&gt;第45行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第45行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  无论其采用何种方式维护关联关系，其数据库中表关系是一定的。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  无论其采用何种方式维护关联关系，其数据库中表关系是一定的。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Hibernate：实体关系：一对多.png|400px]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关系维护 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关系维护 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6019&amp;oldid=prev</id>
		<title>Eijux：​创建页面，内容为“category:Hibernate  == 关于 ==  “一对多”的关系，可分为“单项关联”、“双向关联”。    '''根据不同的情况和业务需求来选择不同的关联方式。'''  关系维护方式： # '''单项关联'''： ## “单向关联：一对多”：由“'''一端'''”维护关联关系，“多端”仅维护自身属性。 ##: &lt;syntaxhighlight lang=&quot;Java&quot; highlight=&quot;&quot;&gt; class A{ 	... 	Set&lt;B&gt; bs; }  class B{ 	... } &lt;/syntaxhighlig…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Hibernate%E7%AC%94%E8%AE%B0_5%EF%BC%9A%E5%AE%9E%E4%BD%93%E5%85%B3%E8%81%94%E5%85%B3%E7%B3%BB%EF%BC%9A%E4%B8%80%E5%AF%B9%E5%A4%9A&amp;diff=6019&amp;oldid=prev"/>
		<updated>2022-06-27T04:21:27Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&lt;a href=&quot;/%E5%88%86%E7%B1%BB:Hibernate&quot; title=&quot;分类:Hibernate&quot;&gt;category:Hibernate&lt;/a&gt;  == 关于 ==  “一对多”的关系，可分为“单项关联”、“双向关联”。    &amp;#039;&amp;#039;&amp;#039;根据不同的情况和业务需求来选择不同的关联方式。&amp;#039;&amp;#039;&amp;#039;  关系维护方式： # &amp;#039;&amp;#039;&amp;#039;单项关联&amp;#039;&amp;#039;&amp;#039;： ## “单向关联：一对多”：由“&amp;#039;&amp;#039;&amp;#039;一端&amp;#039;&amp;#039;&amp;#039;”维护关联关系，“多端”仅维护自身属性。 ##: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt; class A{ 	... 	Set&amp;lt;B&amp;gt; bs; }  class B{ 	... } &amp;lt;/syntaxhighlig…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:Hibernate]]&lt;br /&gt;
&lt;br /&gt;
== 关于 ==&lt;br /&gt;
 “一对多”的关系，可分为“单项关联”、“双向关联”。&lt;br /&gt;
 &lt;br /&gt;
 '''根据不同的情况和业务需求来选择不同的关联方式。'''&lt;br /&gt;
&lt;br /&gt;
关系维护方式：&lt;br /&gt;
# '''单项关联'''：&lt;br /&gt;
## “单向关联：一对多”：由“'''一端'''”维护关联关系，“多端”仅维护自身属性。&lt;br /&gt;
##: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
class A{&lt;br /&gt;
	...&lt;br /&gt;
	Set&amp;lt;B&amp;gt; bs;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B{&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## “单向关联：多对一”：由“'''多端'''”维护关联关系，“一端”仅维护自身属性。&lt;br /&gt;
##: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
class A{&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B{&lt;br /&gt;
	...&lt;br /&gt;
	A a;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''双向关联'''：在“'''一端'''”与“'''多端'''”均维护关联关系。&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
class A{&lt;br /&gt;
	...&lt;br /&gt;
	Set&amp;lt;B&amp;gt; bs;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B{&lt;br /&gt;
	...&lt;br /&gt;
	A a;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 无论其采用何种方式维护关联关系，其数据库中表关系是一定的。&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== 关系维护 ==&lt;br /&gt;
以“客户”（Customer）与“联系人”（LinkMan）为例：&lt;br /&gt;
# 一个客户可以有多个联系人；&lt;br /&gt;
# 一个联系人只能被指定给一个客户；&lt;br /&gt;
&lt;br /&gt;
=== 单向关联：一对多 ===&lt;br /&gt;
示例：&lt;br /&gt;
: 在“Customer”中使用“linkMans”来维护其关联的“LinkMan”集合；&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;8-9&amp;quot;&amp;gt;&lt;br /&gt;
public class Customer { &lt;br /&gt;
	private Long cust_id; &lt;br /&gt;
	private String cust_name;&lt;br /&gt;
	private String cust_industry;&lt;br /&gt;
	private String cust_level;&lt;br /&gt;
	private String cust_phone; &lt;br /&gt;
&lt;br /&gt;
	// 客户类中维护联系人对象集合&lt;br /&gt;
	private Set&amp;lt;LinkMan&amp;gt; linkMans = new HashSet&amp;lt;LinkMan&amp;gt;(); &lt;br /&gt;
&lt;br /&gt;
	// getter、setter&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13-17&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;
	&amp;lt;class name=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; table=&amp;quot;cst_customer&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;id name= &amp;quot;cust_id&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;generator class=&amp;quot;native&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;/id&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_name&amp;quot; length=&amp;quot;32&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_industry&amp;quot; column= &amp;quot;cust_industry&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_level&amp;quot; column= &amp;quot;cust_level&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_phone&amp;quot; column= &amp;quot;cust_phone&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;!-- 配置关联对象集合 --&amp;gt;&lt;br /&gt;
		&amp;lt;set name=&amp;quot;linkMans&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;key column=&amp;quot;lkm_cust_id&amp;quot;&amp;gt;&amp;lt;/key&amp;gt;&lt;br /&gt;
			&amp;lt;one-to-many class= &amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/set&amp;gt;&lt;br /&gt;
	&amp;lt;/class&amp;gt;&lt;br /&gt;
&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 注意：“lkm_cust_id”为“cst_linkMan”表的外键（参照于“cst_customer”表）。&lt;br /&gt;
&lt;br /&gt;
=== 单向关联：多对一 ===&lt;br /&gt;
示例：&lt;br /&gt;
: 在“LinkMan”中使用“customer”属性来维护其关联的“Customer”；&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;6-7&amp;quot;&amp;gt;&lt;br /&gt;
public class LinkMan { &lt;br /&gt;
	private Long lkm_id;&lt;br /&gt;
	private String 1km_name;&lt;br /&gt;
	private String lkm_phone;&lt;br /&gt;
&lt;br /&gt;
	// 联系人类中维护客户对象&lt;br /&gt;
	private Customer customer; &lt;br /&gt;
&lt;br /&gt;
	// getter、setter&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;12-13&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;
	&amp;lt;class name=&amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot; table=&amp;quot;cst_linkMan&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;id name= &amp;quot;lkm_id&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;generator class=&amp;quot;native&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;/id&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;property name=&amp;quot;1km_name&amp;quot; length=&amp;quot;32&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;1km_name&amp;quot; column= &amp;quot;1km_name&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;lkm_phone&amp;quot; column= &amp;quot;lkm_phone&amp;quot;/&amp;gt; &lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;!-- 配置关联对象 --&amp;gt;&lt;br /&gt;
		&amp;lt;many-to-one name=&amp;quot;customer&amp;quot; class=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; column=&amp;quot;lkm_cust_id&amp;quot;/&amp;gt; &lt;br /&gt;
	&amp;lt;/class&amp;gt;&lt;br /&gt;
&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 注意：“lkm_cust_id”为“cst_linkMan”表的外键（参照于“cst_customer”表）。&lt;br /&gt;
&lt;br /&gt;
=== 双向关联：一对多/多对一 ===&lt;br /&gt;
示例：&lt;br /&gt;
# 在“Customer”中：维护其关联的“LinkMan”集合；&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;8-9&amp;quot;&amp;gt;&lt;br /&gt;
public class Customer{ &lt;br /&gt;
	private Long cust_id; &lt;br /&gt;
	private String cust_name;&lt;br /&gt;
	private String cust_industry;&lt;br /&gt;
	private String cust_level;&lt;br /&gt;
	private String cust_phone; &lt;br /&gt;
&lt;br /&gt;
	// 客户类中维护联系人对象集合&lt;br /&gt;
	private Set&amp;lt;LinkMan&amp;gt; linkMans = new HashSet&amp;lt;LinkMan&amp;gt;(); &lt;br /&gt;
&lt;br /&gt;
	// getter、setter&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13-17&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;
	&amp;lt;class name=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; table=&amp;quot;cst_customer&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;id name= &amp;quot;cust_id&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;generator class=&amp;quot;native&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;/id&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_name&amp;quot; length=&amp;quot;32&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_industry&amp;quot; column= &amp;quot;cust_industry&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_level&amp;quot; column= &amp;quot;cust_level&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;cust_phone&amp;quot; column= &amp;quot;cust_phone&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;!-- 配置关联对象集合 --&amp;gt;&lt;br /&gt;
		&amp;lt;set name=&amp;quot;linkMans&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;key column=&amp;quot;lkm_cust_id&amp;quot;&amp;gt;&amp;lt;/key&amp;gt;&lt;br /&gt;
			&amp;lt;one-to-many class= &amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/set&amp;gt;&lt;br /&gt;
	&amp;lt;/class&amp;gt;&lt;br /&gt;
&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 在“LinkMan”中：维护其关联的“Customer”；&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;6-7&amp;quot;&amp;gt;&lt;br /&gt;
public class LinkMan{ &lt;br /&gt;
	private Long lkm_id;&lt;br /&gt;
	private String 1km_name;&lt;br /&gt;
	private String lkm_phone;&lt;br /&gt;
&lt;br /&gt;
	// 联系人类中维护客户对象&lt;br /&gt;
	private Customer customer; &lt;br /&gt;
&lt;br /&gt;
	// getter、setter&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;12-13&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;
	&amp;lt;class name=&amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot; table=&amp;quot;cst_linkMan&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;id name= &amp;quot;lkm_id&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;generator class=&amp;quot;native&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;/id&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;property name=&amp;quot;1km_name&amp;quot; length=&amp;quot;32&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;1km_name&amp;quot; column= &amp;quot;1km_name&amp;quot;/&amp;gt; &lt;br /&gt;
		&amp;lt;property name=&amp;quot;lkm_phone&amp;quot; column= &amp;quot;lkm_phone&amp;quot;/&amp;gt; &lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;!-- 配置关联对象 --&amp;gt;&lt;br /&gt;
		&amp;lt;many-to-one name=&amp;quot;customer&amp;quot; class=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; column=&amp;quot;lkm_cust_id&amp;quot;/&amp;gt; &lt;br /&gt;
	&amp;lt;/class&amp;gt;&lt;br /&gt;
&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 注意：“lkm_cust_id”为“cst_linkMan”表的外键（参照于“cst_customer”表）。&lt;br /&gt;
&lt;br /&gt;
== 级联操作 ==&lt;br /&gt;
 进行级联操作需要在“主控方”（维护关联关系的一方）进行相应的配置。&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue; font-size: 150%&amp;quot;&amp;gt;'''级联是有方向性的'''&amp;lt;/span&amp;gt;。     —— 通过“一端级联操作多端”与“多端级联操作一端”，二者的含义是完全不同的。&lt;br /&gt;
&lt;br /&gt;
=== 级联更新 ===&lt;br /&gt;
----&lt;br /&gt;
 需要在“主控方”的配置中，设置：“&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''cascade=&amp;quot;save-update&amp;quot;'''&amp;lt;/span&amp;gt;”&lt;br /&gt;
&lt;br /&gt;
==== 主控方：“一端” ====&lt;br /&gt;
Customer：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;!-- 配置关联对象集合 --&amp;gt;&lt;br /&gt;
		&amp;lt;set name=&amp;quot;linkMans&amp;quot; cascade=&amp;quot;save-update&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;key column=&amp;quot;lkm_cust_id&amp;quot;&amp;gt;&amp;lt;/key&amp;gt;&lt;br /&gt;
			&amp;lt;one-to-many class= &amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/set&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
测试代码：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;18-23&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 保存客户，并级联保存其联系人&lt;br /&gt;
	public void demo1() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		// 创建客户&lt;br /&gt;
		Customer customer = new Customer(); &lt;br /&gt;
		customer.setCust_name(&amp;quot;中国移动&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
		// 创建联系人&lt;br /&gt;
		LinkMan linkManl = new LinkMan(); &lt;br /&gt;
		linkManl.setLkm_name(&amp;quot;老张&amp;quot;); &lt;br /&gt;
		&lt;br /&gt;
		LinkMan linkMan2 = new LinkMan(); &lt;br /&gt;
		linkMan2.setLkm_name(&amp;quot;老李&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// 建立关联关系&lt;br /&gt;
		customer.getLinkMans().add(linkManl);&lt;br /&gt;
		customer.getLinkMans().add(linkMan2);&lt;br /&gt;
&lt;br /&gt;
		// 保存&lt;br /&gt;
		session.save(customer); &lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 主控方：“多端” ====&lt;br /&gt;
LinkMan：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;!-- 配置关联对象 --&amp;gt;&lt;br /&gt;
		&amp;lt;many-to-one name=&amp;quot;customer&amp;quot; cascade=&amp;quot;save-update&amp;quot; class=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; column=&amp;quot;lkm_cust_id&amp;quot;/&amp;gt; &lt;br /&gt;
		...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
测试代码：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;18-24&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 保存联系人，并级联保存其客户&lt;br /&gt;
	public void demo2() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		// 创建客户&lt;br /&gt;
		Customer customer = new Customer(); &lt;br /&gt;
		customer.setCust_name(&amp;quot;中国移动&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
		// 创建联系人&lt;br /&gt;
		LinkMan linkManl = new LinkMan(); &lt;br /&gt;
		linkManl.setLkm_name(&amp;quot;老张&amp;quot;); &lt;br /&gt;
		&lt;br /&gt;
		LinkMan linkMan2 = new LinkMan(); &lt;br /&gt;
		linkMan2.setLkm_name(&amp;quot;老李&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// 建立关联关系&lt;br /&gt;
		linkManl.setCustomer(customer); &lt;br /&gt;
		linkMan2.setCustomer(customer); &lt;br /&gt;
&lt;br /&gt;
		// 保存&lt;br /&gt;
		session.save(linkManl); &lt;br /&gt;
		session.save(linkManl);  &lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 级联删除 ===&lt;br /&gt;
----&lt;br /&gt;
 需要在“主控方”的配置中，设置：“&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''cascade=&amp;quot;delete&amp;quot;'''&amp;lt;/span&amp;gt;”。&lt;br /&gt;
&lt;br /&gt;
==== 主控方：“一端” ====&lt;br /&gt;
Customer：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;!-- 配置关联对象集合 --&amp;gt;&lt;br /&gt;
		&amp;lt;set name=&amp;quot;linkMans&amp;quot; cascade=&amp;quot;delete&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;key column=&amp;quot;lkm_cust_id&amp;quot;&amp;gt;&amp;lt;/key&amp;gt;&lt;br /&gt;
			&amp;lt;one-to-many class= &amp;quot;cn.itcast.hibernate.domain.LinkMan&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/set&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
测试代码：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;18-23&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 删除客户，并级联删除其联系人&lt;br /&gt;
	public void demo3() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		Customer customer = session.get(Customer.class, 1);&lt;br /&gt;
		session.delete(customer);&lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 主控方：“多端” ====&lt;br /&gt;
LinkMan：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;!-- 配置关联对象 --&amp;gt;&lt;br /&gt;
		&amp;lt;many-to-one name=&amp;quot;customer&amp;quot; cascade=&amp;quot;delete&amp;quot; class=&amp;quot;cn.itcast.hibernate.domain.Customer&amp;quot; column=&amp;quot;lkm_cust_id&amp;quot;/&amp;gt; &lt;br /&gt;
		...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
测试代码：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;18-24&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 删除联系人，并级联删除其客户&lt;br /&gt;
	public void demo4() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		LinkMan linkMan = session.get(LinkMan.class, 3);&lt;br /&gt;
		session.delete(linkMan);&lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== 不配置 cascade 是否可以进行“更新”？ ===&lt;br /&gt;
 不配置 cascade 则：不可以级联更新，但可以通过“同时保存一端和多端的对象”完成更新操作。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
具体说明如下：&lt;br /&gt;
&lt;br /&gt;
 1、如果仅保存任意一方的对象，则将导致 save 操作失败。  ——由于“瞬时对象异常”（&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;org.hibemate.TransientObjectException&amp;lt;/span&amp;gt;）&lt;br /&gt;
&lt;br /&gt;
示例：（“双向关联：一对多/多对一”）&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 保存联系人，并级联保存其客户&lt;br /&gt;
	public void demo3() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		// 创建客户&lt;br /&gt;
		Customer customer = new Customer(); &lt;br /&gt;
		customer.setCust_name(&amp;quot;中国移动&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
		// 创建联系人&lt;br /&gt;
		LinkMan linkMan = new LinkMan(); &lt;br /&gt;
		linkMan.setLkm_name(&amp;quot;老张&amp;quot;); &lt;br /&gt;
		&lt;br /&gt;
		// 建立关联关系&lt;br /&gt;
		customer.getLinkMans().add(linkMan);&lt;br /&gt;
		linkMan.setCustomer(customer); &lt;br /&gt;
&lt;br /&gt;
		// 保存&lt;br /&gt;
		session.save(customer); &lt;br /&gt;
		// session.save(linkMan);&lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
如上代码，保存任意一方的对象，都会由于“持久态对象关联了瞬时态对象”，造成以下错误：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
org.hibemate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# “session.save(customer);”：保存 customer 时，由于不能级联保存，其中的 linkMans 集合属性的元素对象（瞬时态）未被保存，从而导致该异常；&lt;br /&gt;
# “session.save(linkMan);”：保存 linkMan 时，由于不能级联保存，其中的 customer 属性的对象（瞬时态）未被保存，从而导致该异常；&lt;br /&gt;
&lt;br /&gt;
 2、如果“同时保存一端和多端的对象”，则可以完成更新（代码更复杂，执行的 SQL 也更多）。  ——【'''非级联更新'''】&lt;br /&gt;
&lt;br /&gt;
示例：（“双向关联：一对多/多对一”）&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 非级联保存：一个客户，及其两个联系人&lt;br /&gt;
	public void demo() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		// 创建客户&lt;br /&gt;
		Customer customer = new Customer(); &lt;br /&gt;
		customer.setCust_name(&amp;quot;中国移动&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
		// 创建联系人&lt;br /&gt;
		LinkMan linkManl = new LinkMan(); &lt;br /&gt;
		linkManl.setLkm_name(&amp;quot;老张&amp;quot;); &lt;br /&gt;
		&lt;br /&gt;
		LinkMan linkMan2 = new LinkMan(); &lt;br /&gt;
		linkMan2.setLkm_name(&amp;quot;老李&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// 建立关联关系&lt;br /&gt;
		customer.getLinkMans().add(linkManl);&lt;br /&gt;
		customer.getLinkMans().add(linkMan2);&lt;br /&gt;
		&lt;br /&gt;
		linkManl.setCustomer(customer); &lt;br /&gt;
		linkMan2.setCustomer(customer); &lt;br /&gt;
&lt;br /&gt;
		// 保存&lt;br /&gt;
		session.save(customer); &lt;br /&gt;
		session.save(linkManl); &lt;br /&gt;
		session.save(linkManl); &lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
如上代码：&lt;br /&gt;
: 对 Customer 对象进行了保存，也分别对 LinkMan 对象进行了保存；&lt;br /&gt;
* 从控制台打印出的 SQL 语句可以看出：&lt;br /&gt;
*# 执行了三次 insert（对 customer、linkManl、linkMan2）&lt;br /&gt;
*# 执行了两次 update（对 linkManl、linkMan2 更新外键）&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
Hibernate:&lt;br /&gt;
	insert&lt;br /&gt;
	into&lt;br /&gt;
		cst_customer&lt;br /&gt;
		(cust_name, cust_industry, cust_level, cust_phone)&lt;br /&gt;
	values&lt;br /&gt;
		(?, ?, ?, ?)&lt;br /&gt;
Hibernate:&lt;br /&gt;
	insert&lt;br /&gt;
	into&lt;br /&gt;
		cst_linkMan&lt;br /&gt;
		(1km_name, lkm_phone, lkm_cust_id)&lt;br /&gt;
	values&lt;br /&gt;
		(?, ?, ?, ?)&lt;br /&gt;
Hibernate:&lt;br /&gt;
	insert&lt;br /&gt;
	into&lt;br /&gt;
		cst_linkMan&lt;br /&gt;
		(1km_name, lkm_phone, lkm_cust_id)&lt;br /&gt;
	values&lt;br /&gt;
		(?, ?, ?, ?)&lt;br /&gt;
Hibernate:&lt;br /&gt;
	update&lt;br /&gt;
		cst_linkMan&lt;br /&gt;
	set&lt;br /&gt;
		lkm_cust_id&lt;br /&gt;
	where&lt;br /&gt;
		lkm_id=?&lt;br /&gt;
Hibernate:&lt;br /&gt;
	update&lt;br /&gt;
		cst_linkMan&lt;br /&gt;
	set&lt;br /&gt;
		lkm_cust_id&lt;br /&gt;
	where&lt;br /&gt;
		lkm_id=?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 不配置 cascade 是否可以进行“删除”？ ===&lt;br /&gt;
 不配置 cascade 则：可以完成删除，但未必是业务需要的效果。&lt;br /&gt;
&lt;br /&gt;
示例：&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
	@Test &lt;br /&gt;
	// 非级联删除：一个客户&lt;br /&gt;
	public void demo3() { &lt;br /&gt;
		Session session = HibernateUtils.openSession(); &lt;br /&gt;
		Transaction tx = session.beginTransaction(); &lt;br /&gt;
&lt;br /&gt;
		Customer customer = session.get(Customer.class, 1);&lt;br /&gt;
		session.delete(customer);&lt;br /&gt;
&lt;br /&gt;
		tx.commit();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
如上代码：&lt;br /&gt;
# 先将该 customer 关联的所有 LinkMan 的外键置为 null；&lt;br /&gt;
# 再删除该 customer。&lt;/div&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
</feed>