首页
技术知识库
Task工作计划
网站简介
DON框架
后台管理
文章分类
JAVA
框架知识
操作系统
容器相关
数据库层
优化技术
界面编程
网络编程
开发工具
GO语言
其他
读书随笔
观影随笔
每日随笔
APP
JPA 批注参考(查询备用)[JPA]
所属分类
:[数据库层] |
创建时间
:2013-01-13 |
文章属性
:转载 |
文章来源
:http://oracle.com |
作者
:windfly
<p>   </p> <div class="Section0"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="13.5pt">JPA </font></span></b><span>批注参考</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">版本: </font></span><font size="9pt"><span>5/12/06</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">作为 </font></span><font size="9pt"><span>Java </span></font><span>企业版 </span><span><font size="9pt">5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 </font></span><span>规范的组成部分,</span><span><font size="9pt">Java </font></span><span>持续性 </span><span><font size="9pt">API (JPA) </font></span><span>显著简化了 </span><span><font size="9pt">EJB </font></span><span>持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的可移植方式(在 </span><span><font size="9pt">Java EE 5 </font></span><span>应用服务器内部以及 </span><span><font size="9pt">Java </font></span><span>标准版 </span><span><font size="9pt">(Java SE) 5 </font></span><span>应用程序中的 </span><span><font size="9pt">EJB </font></span><span>容器外部均可使用)将 </span><span><font size="9pt">Java </font></span><span>对象映射到关系数据库表。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在 </font></span><font size="9pt"><span>JPA </span></font><span>之前,</span><span><font size="9pt">Java EE </font></span><span>应用程序将持续类表示为容器管理的实体 </span><span><font size="9pt">bean</font></span><span>。使用 </span><span><font size="9pt">JPA</font></span><span>,您可以将任何普通的旧式 </span><span><font size="9pt">Java </font></span><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类指定为 </span><span><font size="9pt">JPA </font></span><span>实体:一个应使用 </span><span><font size="9pt">JPA </font></span><span>持续性提供程序的服务将其非临时字段持久保存到关系数据库(在 </span><span><font size="9pt">Java EE EJB </font></span><span>容器的内部或在简单 </span><span><font size="9pt">Java SE </font></span><span>应用程序中的 </span><span><font size="9pt">EJB </font></span><span>容器的外部)的 </span><span><font size="9pt">Java </font></span><span>对象。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><font size="9pt"><span>JPA </span></font><span>时,可以使用批注配置实体的 </span><span><font size="9pt">JPA </font></span><span>行为。批注是一种使用元数据修饰 </span><span><font size="9pt">Java </font></span><span>源代码的简单表达方法,它编译为相应的 </span><span><font size="9pt">Java </font></span><span>类文件,以便在运行时由 </span><span><font size="9pt">JPA </font></span><span>持续性提供程序解释以管理 </span><span><font size="9pt">JPA </font></span><span>行为。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">例如,要将 </font></span><font size="9pt"><span>Java </span></font><span>类指定为 </span><span><font size="9pt">JPA </font></span><span>实体,请使用 </span><span><u><font size="9pt" color="#0000ff">@Entity</font></u></span><span><font size="9pt"> 批注,如下所示:</font></span> </p> <p class="p0"> <span>@Entity</span><span><font size="10.5000pt"><br></font></span><span> public class Employee implements Serializable {</span><span><font size="10.5000pt"><br></font></span><span>    ...</span><span><font size="10.5000pt"><br></font></span><span> }</span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">您可以有选择地使用批注来修饰实体类以覆盖默认值。这称作 按异常进行配置 </font></span><font size="9pt"><span>(configuration by exception)</span></font><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">本参考广泛引用了 </font></span><span><u><font size="9pt" color="#0000ff">JSR-220 Enterprise JavaBean </font></u></span><span>版本 </span><span><u><font size="9pt" color="#0000ff">3.0</font></u></span><span><font size="9pt"> Java </font></span><span>持续性 </span><span><font size="9pt">API </font></span><span>规范,以按类别汇总批注信息(请参阅 </span><span><u><font size="9pt" color="#0000ff">表 </font></u></span><u><font size="9pt" color="#0000ff"><span>1-1</span></font></u><span><font size="9pt">),并解释了何时以及如何使用这些批注来自定义 </font></span><font size="9pt"><span>JPA </span></font><span>行为,以满足应用程序的需要。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关详细信息,请参阅:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">1 </font></u></span><u><span><font size="9pt">批注索引</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">2 </font></u></span><u><span><font size="9pt">完整的 </font></span><font size="9pt"><span>JPA </span></font></u><span>批注 </span><span><u><font size="9pt">Javadoc</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="12pt">批注索引</font></span></b> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">3 </font></span><span><font size="9pt">A</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">4 </font></u></span><u><span><font size="9pt" color="#0000ff">@AssociationOverride</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">5 </font></u></span><u><span><font size="9pt" color="#0000ff">@AssociationOverrides</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">6 </font></u></span><u><span><font size="9pt" color="#0000ff">@AttributeOverride</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">7 </font></u></span><u><span><font size="9pt" color="#0000ff">@AttributeOverrides</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">8 </font></span><span><font size="9pt">B</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">9 </font></u></span><u><span><font size="9pt" color="#0000ff">@Basic</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">10 </font></span><span><font size="9pt">C</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">11 </font></u></span><u><span><font size="9pt" color="#0000ff">@Column</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">12 </font></u></span><u><span><font size="9pt" color="#0000ff">@ColumnResult</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">13 </font></span><span><font size="9pt">D</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">14 </font></u></span><u><span><font size="9pt" color="#0000ff">@DiscriminatorColumn</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">15 </font></u></span><u><span><font size="9pt" color="#0000ff">@DiscriminatorValue</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">16 </font></span><span><font size="9pt">E</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">17 </font></u></span><u><span><font size="9pt" color="#0000ff">@Embeddable</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">18 </font></u></span><u><span><font size="9pt" color="#0000ff">@Embedded</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">19 </font></u></span><u><span><font size="9pt" color="#0000ff">@EmbeddedId</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">20 </font></u></span><u><span><font size="9pt" color="#0000ff">@Entity</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">21 </font></u></span><u><span><font size="9pt" color="#0000ff">@EntityListeners</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">22 </font></u></span><u><span><font size="9pt" color="#0000ff">@EntityResult</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">23 </font></u></span><u><span><font size="9pt" color="#0000ff">@Enumerated</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">24 </font></u></span><u><span><font size="9pt" color="#0000ff">@ExcludeDefaultListeners</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">25 </font></u></span><u><span><font size="9pt" color="#0000ff">@ExcludeSuperclassListeners</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">26 </font></span><span><font size="9pt">F</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">27 </font></u></span><u><span><font size="9pt" color="#0000ff">@FieldResult</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">28 </font></span><span><font size="9pt">G</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">29 </font></u></span><u><span><font size="9pt" color="#0000ff">@GeneratedValue</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">30 </font></span><span><font size="9pt">I</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">31 </font></u></span><u><span><font size="9pt" color="#0000ff">@Id</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">32 </font></u></span><u><span><font size="9pt" color="#0000ff">@IdClass</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">33 </font></u></span><u><span><font size="9pt" color="#0000ff">@Inheritance</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">34 </font></span><span><font size="9pt">J</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">35 </font></u></span><u><span><font size="9pt" color="#0000ff">@JoinColumn</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">36 </font></u></span><u><span><font size="9pt" color="#0000ff">@JoinColumns</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">37 </font></u></span><u><span><font size="9pt" color="#0000ff">@JoinTable</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">38 </font></span><span><font size="9pt">L</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">39 </font></u></span><u><span><font size="9pt" color="#0000ff">@Lob</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">40 </font></span><span><font size="9pt">M</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">41 </font></u></span><u><span><font size="9pt" color="#0000ff">@ManyToMany</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">42 </font></u></span><u><span><font size="9pt" color="#0000ff">@ManyToOne</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">43 </font></u></span><u><span><font size="9pt" color="#0000ff">@MapKey</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">44 </font></u></span><u><span><font size="9pt" color="#0000ff">@MappedSuperclass</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">45 </font></span><span><font size="9pt">N</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">46 </font></u></span><u><span><font size="9pt" color="#0000ff">@NamedNativeQueries</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">47 </font></u></span><u><span><font size="9pt" color="#0000ff">@NamedNativeQuery</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">48 </font></u></span><u><span><font size="9pt" color="#0000ff">@NamedQueries</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">49 </font></u></span><u><span><font size="9pt" color="#0000ff">@NamedQuery</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">50 </font></span><span><font size="9pt">O</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">51 </font></u></span><u><span><font size="9pt" color="#0000ff">@OneToMany</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">52 </font></u></span><u><span><font size="9pt" color="#0000ff">@OneToOne</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">53 </font></u></span><u><span><font size="9pt" color="#0000ff">@OrderBy</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">54 </font></span><span><font size="9pt">P</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">55 </font></u></span><u><span><font size="9pt" color="#0000ff">@PersistenceContext</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">56 </font></u></span><u><span><font size="9pt" color="#0000ff">@PersistenceContexts</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">57 </font></u></span><u><span><font size="9pt" color="#0000ff">@PersistenceProperty</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">58 </font></u></span><u><span><font size="9pt" color="#0000ff">@PersistenceUnit</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">59 </font></u></span><u><span><font size="9pt" color="#0000ff">@PersistenceUnits</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">60 </font></u></span><u><span><font size="9pt" color="#0000ff">@PrimaryKeyJoinColumn</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">61 </font></u></span><u><span><font size="9pt" color="#0000ff">@PrimaryKeyJoinColumns</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">62 </font></span><span><font size="9pt">Q</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">63 </font></u></span><u><span><font size="9pt" color="#0000ff">@QueryHint</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">64 </font></span><span><font size="9pt">S</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">65 </font></u></span><u><span><font size="9pt" color="#0000ff">@SecondaryTable</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">66 </font></u></span><u><span><font size="9pt" color="#0000ff">@SecondaryTables</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">67 </font></u></span><u><span><font size="9pt" color="#0000ff">@SequenceGenerator</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">68 </font></u></span><u><span><font size="9pt" color="#0000ff">@SqlResultSetMapping</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">69 </font></u></span><u><span><font size="9pt" color="#0000ff">@SqlResultSetMappings</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">70 </font></span><span><font size="9pt">T</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">71 </font></u></span><u><span><font size="9pt" color="#0000ff">@Table</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">72 </font></u></span><u><span><font size="9pt" color="#0000ff">@TableGenerator</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">73 </font></u></span><u><span><font size="9pt" color="#0000ff">@Temporal</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">74 </font></u></span><u><span><font size="9pt" color="#0000ff">@Transient</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">75 </font></span><span><font size="9pt">U</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">76 </font></u></span><u><span><font size="9pt" color="#0000ff">@UniqueConstraint</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">77 </font></span><span><font size="9pt">V</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">78 </font></u></span><u><span><font size="9pt" color="#0000ff">@Version</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt"> </font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-1 </span></font><span>按类别划分的 </span><span><font size="9pt">JPA </font></span><span>批注</span> </p> <table> <tr> <td style="width: 57.6500pt" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">类别</font></span></b> </p> </td> <td style="width: 276.5000pt" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">说明</font></span></b> </p> </td> <td style="width: 81.0500pt" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">批注</font></span></b> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">实体</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font size="9pt">Java </font></span><span>类是非持续类,并且仅当使用此批注对其进行修饰的情况下才可用于 </span><span><font size="9pt">JPA </font></span><span>服务。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用此批注将普通的旧式 </font></span><font size="9pt"><span>Java </span></font><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类指定为实体,以便可以将它用于 </span><span><font size="9pt">JPA </font></span><span>服务。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要将类用于 </font></span><font size="9pt"><span>JPA </span></font><span>服务,必须将该类指定为 </span><span><font size="9pt">JPA </font></span><span>实体(使用此批注或</span><span><font size="9.0000pt" color="#666666">orm.xml</font></span><span><font size="9pt"> 文件)。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Entity</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">数据库模式属性</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体名称对应于同名的数据库表,且实体的数据成员名称对应于同名的数据库列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注覆盖此默认行为,并微调对象模型与数据模型之间的关系。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Table</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@SecondaryTable</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@SecondaryTables</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Column</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@JoinColumn</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@JoinColumns</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PrimaryKeyJoinColumn</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PrimaryKeyJoinColumns</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@JoinTable</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@UniqueConstraint</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">身份</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体必须至少有一个用作主键的字段或属性。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注指定以下项之一:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.0000pt" color="#666666">78 </font></span><span><font size="9pt">一个 </font></span><span><font size="9.0000pt" color="#666666">@Id</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.0000pt" color="#666666">78 </font></span><span><font size="9pt">多个 </font></span><span><font size="9.0000pt" color="#666666">@Id</font></span><span><font size="9pt"> 和一个 </font></span><span><font size="9.0000pt" color="#666666">@IdClass</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.0000pt" color="#666666">78 </font></span><span><font size="9pt">一个 </font></span><span><font size="9.0000pt" color="#666666">@EmbeddedId</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">还可以使用这些批注微调数据库维护实体身份的方式。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Id</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@IdClass</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@EmbeddedId</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@GeneratedValue</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@SequenceGenerator</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@TableGenerator</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">直接映射</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为大多数 </span><span><font size="9pt">Java </font></span><span>基元类型、基元类型的包装程序以及 </span><span><font size="9.0000pt" color="#666666">enums</font></span><span><font size="9pt"> 自动配置一个 </font></span><span><font size="9.0000pt" color="#666666">Basic</font></span><span><font size="9pt"> 映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注微调数据库实现这些映射的方式。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Basic</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Enumerated</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Temporal</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Lob</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Transient</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">关系映射</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">JPA </font></span><span>持续性提供程序要求您显式映射关系。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注指定实体关系的类型和特征,以微调数据库实现这些关系的方式。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@OneToOne</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@ManyToOne</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@OneToMany</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@ManyToMany</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@MapKey</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@OrderBy</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">组合</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体均映射到它自己的表。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注覆盖其他实体拥有的此种实体行为。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Embeddable</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Embedded</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AttributeOverride</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AttributeOverrides</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AssociationOverride</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AssociationOverrides</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">继承</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有持久字段均由一个实体类定义。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果实体类继承了一个或多个超类中的某些或所有持续字段,则使用这些批注。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Inheritance</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@DiscriminatorColumn</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@DiscriminatorValue</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@MappedSuperclass</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AssociationOverride</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AssociationOverrides</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AttributeOverride</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@AttributeOverrides</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">锁定</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设应用程序负责数据一致性。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用此批注启用 </font></span><font size="9pt"><span>JPA </span></font><span>管理的乐观锁定(推荐使用)。</span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@Version</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">生命周期回调事件</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序处理所有持续性操作。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果您要在实体生命周期内随时调用自定义逻辑,请使用这些批注将实体方法与 </font></span><font size="9pt"><span>JPA </span></font><span>生命周期事件关联。 </span><span><u><font size="9pt" color="#0000ff">图 </font></u></span><u><font size="9pt" color="#0000ff"><span>1-1</span></font></u><span><font size="10.5000pt"> 演示了这些生命周期事件之间的关系。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PrePersist</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PostPersist</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PreRemove</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PostRemove</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PreUpdate</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PostUpdate</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PostLoad</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@EntityListeners</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@ExcludeDefaultListeners</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@ExcludeSuperclassListeners</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">实体管理器</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的应用程序中,您可以使用</span><span><font size="9.0000pt" color="#666666">EntityManager</font></span><span><font size="9pt"> 实例执行所有持续性操作(创建、读取、更新和删除)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注将实体与实体管理器关联并自定义实体管理器的环境。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PersistenceUnit</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PersistenceUnits</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PersistenceContext</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PersistenceContexts</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@PersistenceProperty</font></u></span> </p> </td> </tr> <tr> <td style="width: 57.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">查询</font></span> </p> </td> <td style="width: 276.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="368"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的应用程序中,可以使用实体管理器动态创建和执行查询,也可以预定义查询并在运行时按名称执行它们。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用这些批注预定义查询并管理它们的结果集。</font></span> </p> </td> <td style="width: 81.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="108"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@NamedQuery</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@NamedQueries</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@NamedNativeQuery</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@NamedNativeQueries</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@QueryHint</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@ColumnResult</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@EntityResult</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@FieldResult</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@SqlResultSetMapping</font></u></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="10pt" color="#0000ff">@SqlResultSetMappings</font></u></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="12pt">@AssociationOverride</font></span></b> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序自动假设子类继承超类中定义的持久属性及其关联映射。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果继承的列定义对实体不正确(例如,如果继承的列名与已经存在的数据模型不兼容或作为数据库中的列名无效),请使用 </font></span><span><font size="9.0000pt" color="#666666">@AssociationOverride</font></span><span><font size="9pt"> 批注自定义从 </font></span><span><u><font size="9pt" color="#0000ff">@MappedSuperclass</font></u></span><span><font size="9pt"> 或</font></span><span><u><font size="9pt" color="#0000ff">@Embeddable</font></u></span><span><font size="9pt"> 继承的 </font></span><span><u><font size="9pt" color="#0000ff">@OneToOne</font></u></span><span><font size="9pt"> 或 </font></span><span><u><font size="9pt" color="#0000ff">@ManyToOne</font></u></span><span><font size="9pt"> 映射,以更改与字段或属性关联的</font></span><span><u><font size="9pt" color="#0000ff">@JoinColumn</font></u></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要进行的 </font></span><span><font size="9.0000pt" color="#666666">@AssociationOverride</font></span><span><font size="9pt"> 更改,则必须使用 </font></span><span><u><font size="9pt" color="#0000ff">@AssociationOverrides</font></u></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要自定义基本映射以更改它的 </font></span><span><u><font size="9pt" color="#0000ff">@Column</font></u></span><span><font size="9pt">,请使用 </font></span><span><u><font size="9pt" color="#0000ff">@AttributeOverride</font></u></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><u><font size="9pt" color="#0000ff">表 </font></u></span><u><font size="9pt" color="#0000ff"><span>1-4</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><span><u><font size="9pt" color="#0000ff">API</font></u></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-2 @AssociationOverride </span></font><span>属性</span> </p> <table> <tr> <td style="width: 50.4500pt" width="67"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">属性</font></span></b> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">必需</font></span></b> </p> </td> <td style="width: 324.2000pt" width="432"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <b><span><font size="9pt">说明</font></span></b> </p> </td> </tr> <tr> <td style="width: 50.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="67"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9.0000pt" color="#666666">joinColumns</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 324.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="432"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定映射到持久属性的连接列,请将 </font></span><span><font color="#666666" size="9.0000pt">joinColums</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt"> 实例的数组(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="10.5000pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">映射类型将与可嵌套类或映射的超类中定义的类型相同。</font></span> </p> </td> </tr> <tr> <td style="width: 50.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="67"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 324.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="432"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用了基于属性的访问,则映射的为嵌入对象中的属性名称,如果使用了基于字段的访问,则映射的为字段名称。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-4</span></font></u><span><font size="9pt"> 显示了 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 中的实体扩展的 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 显示了如何在实体子类中使用 </font></span><span><font color="#666666" size="9.0000pt">@AssociationOverride</font></span><span><font size="9pt"> 覆盖 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 中定义(默认情况下)的</font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="9pt"> 以便关联到 </font></span><span><font color="#666666" size="9.0000pt">Address</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用 </font></span><span><font color="#666666" size="9.0000pt">@AssociationOverride</font></span><span><font size="9pt">,则 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表包含以下列:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">79 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">80 </font></span><span><font color="#666666" size="9.0000pt">VERSION</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">81 </font></span><span><font color="#666666" size="9.0000pt">ADDR_ID</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">82 </font></span><span><font color="#666666" size="9.0000pt">WAGE</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不使用 </font></span><span><font color="#666666" size="9.0000pt">@AssociationOverride</font></span><span><font size="9pt">,则 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表包含以下列:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">83 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">84 </font></span><span><font color="#666666" size="9.0000pt">VERSION</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">85 </font></span><span><font color="#666666" size="9.0000pt">ADDRESS</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">86 </font></span><span><font color="#666666" size="9.0000pt">WAGE</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-1 @MappedSuperclass</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@MappedSuperclass</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id protected Integer id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Version protected Integer version;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne protected Address address;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-2 @AssociationOverride</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity@AssociationOverride(name="address", joinColumns=@JoinColumn(name="ADDR_ID"))public class PartTimeEmployee extends Employee {   @Column(name="WAGE")   protected Float hourlyWage;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@AssociationOverrides</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@AssociationOverride</font></span></u><span><font size="9pt">,则必需使用一个 </font></span><span><font color="#666666" size="9.0000pt">@AssociationOverrides</font></span><span><font size="9pt"> 批注指定所有关联覆盖。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-3 @AssociationOverrides </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多覆盖,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">AssociationOverride</font></span><span><font size="9pt"> 实例的数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@AssociationOverride</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个关联覆盖。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-3 @AssociationOverrides</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AssociationOverrides({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AssociationOverride(name="address", joinColumn=@Column(name="ADDR_ID")),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AssociationOverride(name="id", joinColumn=@Column(name="PTID"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="WAGE")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Float hourlyWage;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@AttributeOverride</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序自动假设子类继承超类中定义的持久属性及其基本映射。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果针对实体继承的列定义不正确,请使用 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverride</font></span><span><font size="9pt"> 批注自定义一个从</font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 继承的基本映射以更改与字段或属性关联的 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">。(例如,如果继承的列名与事先存在的数据模型不兼容,或者作为数据库中的列名无效)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要进行的 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverride</font></span><span><font size="9pt"> 更改,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverrides</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要自定义关联映射以更改它的 </font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="9pt">,请使用 </font></span><u><span><font color="#0000ff" size="9pt">@AssociationOverride</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-4</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-4 @AttributeOverride </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">column</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">映射到持久属性的 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="10.5000pt">。映射类型将与可嵌套类或映射超类中定义的类型相同。</font></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用了基于属性的访问,则映射的为嵌入对象中的属性名称,如果使用了基于字段的访问,则映射的为字段名称。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-4</span></font></u><span><font size="9pt"> 显示了 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 中的实体扩展的 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 显示了如何使用实体子类中的 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverride</font></span><span><font size="9pt"> 覆盖 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 中定义(默认情况下)的</font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">,以便基本映射到 </font></span><span><font color="#666666" size="9.0000pt">Address</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverride</font></span><span><font size="9pt">,则 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表包含以下列:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">87 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">88 </font></span><span><font color="#666666" size="9.0000pt">VERSION</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">89 </font></span><span><font color="#666666" size="9.0000pt">ADDR</font></span><span><font size="9pt">_STRING</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">90 </font></span><span><font color="#666666" size="9.0000pt">WAGE</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不使用 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverride</font></span><span><font size="9pt">,则 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表包含以下列:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">91 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">92 </font></span><span><font color="#666666" size="9.0000pt">VERSION</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">93 </font></span><span><font color="#666666" size="9.0000pt">ADDRESS</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">94 </font></span><span><font color="#666666" size="9.0000pt">WAGE</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-4 @MappedSuperclass</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@MappedSuperclass</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id protected Integer id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Version protected Integer version;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String address;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-5 @AttributeOverride</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="address", column=@Column(name="ADDR_STRING"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="WAGE")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Float hourlyWage;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@AttributeOverrides</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="9pt">,则必需使用一个 </font></span><span><font color="#666666" size="9.0000pt">@AttributeOverrides</font></span><span><font size="9pt"> 批注指定所有属性覆盖。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-5 @AttributeOverrides </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多属性覆盖,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">AttributeOverride</font></span><span><font size="9pt"> 实例的数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个属性覆盖。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-6 @AttributeOverrides</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverrides({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="address", column=@Column(name="ADDR_ID")),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="id", column=@Column(name="PTID"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Column(name="WAGE")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Float hourlyWage;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public PartTimeEmployee() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public Float getHourlyWage() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setHourlyWage(Float wage) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Basic</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为大多数 </span><span><font size="9pt">Java </font></span><span>基元类型、基元类型的包装程序以及枚举自动配置一个</span><span><font color="#666666" size="9.0000pt">@Basic</font></span><span><font size="9pt"> 映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Basic</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">95 </font></span><span><font size="9pt">将获取类型配置为 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">96 </font></span><span><font size="9pt">如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-6 @Basic </span></font><span>属性</span> </p> <table> <tr> <td style="width: 41.9500pt" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 332.7000pt" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 41.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fetch</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 332.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">FetchType.EAGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用获取类型 </span><span><font color="#666666" size="9.0000pt">EAGER</font></span><span><font size="9pt">:这将要求持续性提供程序运行时必须迫切获取数据。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这不适合于应用程序或特定的持久字段,请将 </font></span><span><font color="#666666" size="9.0000pt">fetch</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">FetchType.LAZY</font></span><span><font size="9pt">:这将提示持续性提供程序在首次访问数据(如果可以)时应不急于获取数据。</font></span> </p> </td> </tr> <tr> <td style="width: 41.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">optional</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 332.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有(非基元)字段和属性的值可以为空。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这并不适合于您的应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">optional</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-7</span></font></u><span><font size="9pt"> 显示了如何使用此批注为基本映射指定获取类型 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-7 @Basic</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Basic(fetch=LAZY)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String getName() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Column</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体的持久字段存储在其名称与持久字段的名称相匹配的数据库表列中。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Column</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">97 </font></span><span><font size="9pt">将持久字段与其他名称关联(如果默认列名难于处理、与事先存在的数据模型不兼容或作为数据库中的列名无效)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">98 </font></span><span><font size="9pt">将持久字段与辅助表中的列关联(请参阅 </font></span><font size="9pt"><u><span>@SecondaryTable</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">99 </font></span><span><font size="9pt">微调数据库中列的特征</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-7</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-7 @Column </span></font><span>属性</span> </p> <table> <tr> <td style="width: 58.9000pt" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 315.7500pt" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columnDefinition</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>使用最少量 </span><span><font size="9pt">SQL </font></span><span>创建一个数据库表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要使用更多指定选项创建的列,请将 </font></span><span><font color="#666666" size="9.0000pt">columnDefinition</font></span><span><font size="9pt"> 设置为在针对列生成 </font></span><font size="9pt"><span>DDL </span></font><span>时希望 </span><span><font size="9pt">JPA </font></span><span>使用的 </span><span><font size="9pt">SQL </font></span><span>片断。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">注意:捕获批注中的 </font></span><font size="9pt"><span>DDL </span></font><span>信息时,某些 </span><span><font size="9pt">JPA </font></span><span>持续性提供程序可以在生成数据库模式时使用此 </span><span><font size="9pt">DDL</font></span><span>。例如,请参阅 </span><u><span><font color="#0000ff" size="9pt">“</font></span><font color="#0000ff" size="9pt"><span>用于 Java2DB模式生成的 TopLink JPA扩展”</span></font></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">insertable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有列始终包含在 </span><span><font color="#666666" size="9.0000pt">SQL INSERT</font></span><span><font size="9pt"> 语句中。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列不应包含在这些语句中,请将 </font></span><span><font color="#666666" size="9.0000pt">insertable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">length</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>255</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有列在用于保存 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 值时的最大长度为 </font></span><font size="9pt"><span>255 </span></font><span>个字符。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列不适合于您的应用程序或数据库,请将 </font></span><span><font color="#666666" size="9.0000pt">length</font></span><span><font size="9pt"> 设置为适合于您的数据库列的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的每个持久字段都存储在其名称与持久字段或属性的名称相匹配的数据库表列中。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定其他列名,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">nullable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设允许所有列包含空值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不允许该列包含空值,请将 </font></span><span><font color="#666666" size="9.0000pt">nullable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">precision</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>0.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有列在用于保存十进制(精确数字)值时的精度为 </span><span><font size="9pt">0</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该精度不适合于您的应用程序或数据库,请将 </font></span><span><font color="#666666" size="9.0000pt">precision</font></span><span><font size="9pt"> 设置为相应的</font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 精度。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">scale</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>0.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有列在用于保存十进制(精确数字)值时的伸缩度为 </span><span><font size="9pt">0</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该伸缩度不适合于您的应用程序或数据库,请将 </font></span><span><font color="#666666" size="9.0000pt">scale</font></span><span><font size="9pt"> 设置为相应的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt">精度。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">table</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有持久字段都存储到一个其名称为实体名称的数据库表中(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Table</font></span></u><span><font size="10.5000pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列与辅助表关联(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@SecondaryTable</font></span></u><span><font size="10.5000pt">),请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为相应辅助表名称的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称,如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="10.5000pt"> 所示。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">unique</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设允许所有列包含重复值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不允许该列包含重复值,请将 </font></span><span><font color="#666666" size="9.0000pt">unique</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。设置为 </font></span><font size="9pt"><span>true </span></font><span>时,这相当于在表级别使用 </span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 58.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="78"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">updatable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设列始终包含在 </span><span><font color="#666666" size="9.0000pt">SQL UPDATE</font></span><span><font size="9pt"> 语句中。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列不应包含在这些语句中,请将 </font></span><span><font color="#666666" size="9.0000pt">updatable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="9pt"> 显示了如何使用此批注使 </font></span><font size="9pt"><span>JPA </span></font><span>将 </span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt"> 持久保存到辅助表 </font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt"> 中的列 </font></span><span><font color="#666666" size="9.0000pt">EMP_NUM</font></span><span><font size="9pt">。默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>将 </span><span><font color="#666666" size="9.0000pt">empName</font></span><span><font size="9pt"> 持久保存到主表 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 中的列 </font></span><span><font color="#666666" size="9.0000pt">empName</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-8 @Column</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SecondaryTable(name="EMP_HR")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="EMP_NUM", table="EMP_HR")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Long empId;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> private String empName;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@ColumnResult</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">执行 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt"> 时,它可以返回实体(包括不同类型的实体)、标量值或实体和标量值的组合。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@ColumnResult</font></span><span><font size="9pt"> 批注返回标量值。标量类型由您在 </font></span><span><font color="#666666" size="9.0000pt">@ColumnResult</font></span><span><font size="9pt"> 中标识的列类型确定。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关详细信息,另请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@EntityResult</font></span></u><span><font size="9pt">、 </font></span><u><span><font color="#0000ff" size="9pt">@FieldResult</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-8 @ColumnResult </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询的 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为列名的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 等效形式。如果在 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt">中使用列别名( </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句),则将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为列别名。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-9</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Item</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-10</span></font></u><span><font size="9pt">)标量 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 包含在结果列表(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-11</span></font></u><span><font size="9pt">)中。在该示例中,结果列表将为 </font></span><span><font color="#666666" size="9.0000pt">Object</font></span><span><font size="9pt"> 数组的 </font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">,如: </font></span><span><font color="#666666" size="9.0000pt">{[Order, "Shoes"], [Order, "Socks"], ...}</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-9 </span></font><span>使用 </span><span><font size="9pt">@ColumnResult </font></span><span>的 </span><span><font size="9pt">Order </font></span><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Order.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="order_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="quantity", column="order_quantity"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="item",    column="order_item")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    },</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> columns={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ColumnResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="item_name"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected long quantity;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Item item;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-10 Item </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Item {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-11 </span></font><span>结合使用 </span><span><font size="9pt">@SqlResultSetMapping </font></span><span>与 </span><span><font size="9pt">@ColumnResult </font></span><span>的原生查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query q = entityManager.createNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "SELECT o.id      AS order_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.quantity AS order_quantity, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.item    AS order_item, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.name    AS item_name, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "FROM Order o, Item i " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "WHERE (order_quantity > 25) AND (order_item = i.id)",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "OrderResults"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> );</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> List resultList = q.getResultList();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // List of Object arrays:{[Order, "Shoes"], [Order, "Socks"], ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@DiscriminatorColumn</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,当 </font></span><u><span><font color="#0000ff" size="9pt">@Inheritance</font></span></u><span><font size="9pt"> 属性策略为 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.SINGLE_TABLE</font></span><span><font size="9pt"> 或 </font></span><span><font color="#666666" size="9.0000pt">JOINED</font></span><span><font size="9pt"> 时,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将创建一个名为 </span><span><font color="#666666" size="9.0000pt">DTYPE</font></span><span><font size="9pt"> 的标识符列以区分继承层次中的类。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@DiscriminatorColumn</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">100 </font></span><span><font size="9pt">指定一个标识符列名(如果数据模型中的列名不是默认列名 </font></span><span><font color="#666666" size="9.0000pt">DTYPE</font></span><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">101 </font></span><span><font size="9pt">指定一个适用于应用程序或事先存在的数据模型的标识符列长度</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">102 </font></span><span><font size="9pt">微调数据库中的标识符列的特征</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-9</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-9 @DiscriminatorColumn </span></font><span>属性</span> </p> <table> <tr> <td style="width: 67.9500pt" width="90"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 306.7000pt" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 67.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="90"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columnDefinition</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 306.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用最少量 </span><span><font size="9pt">SQL </font></span><span>创建一个数据库表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要使用更多指定选项创建的列,请将 </font></span><span><font color="#666666" size="9.0000pt">columnDefinition</font></span><span><font size="9pt"> 设置为在针对列生成 </font></span><font size="9pt"><span>DDL </span></font><span>时希望 </span><span><font size="9pt">JPA </font></span><span>使用的 </span><span><font size="9pt">SQL </font></span><span>片断。</span> </p> </td> </tr> <tr> <td style="width: 67.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="90"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">discriminatorType</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 306.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">DiscriminatorType.STRING</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设标识符类型为 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要使用其他类型,请将 </font></span><span><font color="#666666" size="9.0000pt">discriminatorType</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">DiscriminatorType.CHAR</font></span><span><font size="9pt"> 或 </font></span><span><font color="#666666" size="9.0000pt">DiscriminatorType.INTEGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">您的 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="10.5000pt"> 必须符合此类型。</font></span> </p> </td> </tr> <tr> <td style="width: 67.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="90"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">length</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 306.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>31</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设标识符列在用于保存 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 值时的最大长度为 </font></span><font size="9pt"><span>255 </span></font><span>个字符。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列不适合于您的应用程序或数据库,请将 </font></span><span><font color="#666666" size="9.0000pt">length</font></span><span><font size="9pt"> 设置为适合于您的数据库列的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">您的 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="10.5000pt"> 必须符合此长度。</font></span> </p> </td> </tr> <tr> <td style="width: 67.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="90"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 306.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设标识符列名为</span><span><font size="9pt">“ </font></span><span><font color="#666666" size="9.0000pt">DTYPE</font></span><span><font size="9pt">”</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定其他列名,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-12</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定一个名为 </font></span><span><font color="#666666" size="9.0000pt">DISC</font></span><span><font size="9pt">、类型为 </font></span><span><font color="#666666" size="9.0000pt">STRING</font></span><span><font size="9pt">、长度为 </font></span><font size="9pt"><span>20 </span></font><span>的标识符列。在本示例中,该类的 </span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">CUST</font></span><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-13</span></font></u><span><font size="9pt"> 中的子类将它自己的</font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">VIP</font></span><span><font size="9pt">。在 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt"> 中, </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 的值必须可以转换为由 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">discriminatorType</font></span><span><font size="9pt"> 指定的类型,并且必须符合</font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">length</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-12 @DiscriminatorColumn </span></font><span>和 </span><span><font size="9pt">@DiscriminatorValue </font></span><font size="9pt"><span>— </span></font><span>根类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Inheritance(strategy=SINGLE_TABLE)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorColumn(name="DISC", discriminatorType=STRING, length=20)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value-"CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-13 @DiscriminatorValue </span><span>— </span></font><span>子类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value="VIP")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@DiscriminatorValue</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,当 </font></span><u><span><font color="#0000ff" size="9pt">@Inheritance</font></span></u><span><font size="9pt"> 属性策略为 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.SINGLE_TABLE</font></span><span><font size="9pt"> 或 </font></span><span><font color="#666666" size="9.0000pt">JOINED</font></span><span><font size="9pt"> 时,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用 </span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt"> 按实体名称区分继承层次中的类(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@DiscriminatorValue</font></span><span><font size="9pt"> 批注指定用于区分此继承层次中的实体的标识符值:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">103 </font></span><span><font size="9pt">如果实体名称不适合于此应用程序</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">104 </font></span><span><font size="9pt">匹配现有的数据库模式</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-10</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-10 @DiscriminatorValue </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为符合 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="10.5000pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">discriminatorType</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">length</font></span><span><font size="9pt"> 的标识符值的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 等效形式。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-14</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定一个名为 </font></span><span><font color="#666666" size="9.0000pt">DISC</font></span><span><font size="9pt">、类型为 </font></span><span><font color="#666666" size="9.0000pt">STRING</font></span><span><font size="9pt">、长度为 </font></span><font size="9pt"><span>20 </span></font><span>的标识符列。在本示例中,该类的 </span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">CUST</font></span><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-15</span></font></u><span><font size="9pt"> 中的子类将它自己的</font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">VIP</font></span><span><font size="9pt">。在 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt"> 中, </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 的值必须可以转换为由 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">discriminatorType</font></span><span><font size="9pt"> 指定的类型,并且必须符合</font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">length</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-14 @DiscriminatorColumn </span></font><span>和 </span><span><font size="9pt">@DiscriminatorValue </font></span><font size="9pt"><span>— </span></font><span>根类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Inheritance(strategy=SINGLE_TABLE)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorColumn(name="DISC", discriminatorType=STRING, length=20)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value-"CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-15 @DiscriminatorValue </span><span>— </span></font><span>子类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value="VIP")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Embeddable</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体均持久保存到它自己的数据库表。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Embeddable</font></span><span><font size="9pt"> 批注指定一个类,该类的实例存储为拥有实体的固有部分并共享该实体的身份。嵌入对象的每个持久属性或字段都将映射到实体的数据库表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-16</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定:类 </font></span><span><font color="#666666" size="9.0000pt">EmploymentPeriod</font></span><span><font size="9pt"> 在用作批注为 </font></span><u><span><font color="#0000ff" size="9pt">@Embedded</font></span></u><span><font size="9pt"> 的持久字段的类型时可以嵌套到实体中(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-17</span></font></u><span><font size="9pt">)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-16 @Embeddable</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Embeddable</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class EmploymentPeriod {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> java.util.Date startDate;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> java.util.Date endDate;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Embedded</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体均持久保存到它自己的数据库表。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Embedded</font></span><span><font size="9pt"> 批注指定一个持久字段,该字段的 </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 类型可以存储为拥有实体的固有部分,并共享该实体的身份。嵌入对象的每个持久属性或字段均映射到拥有实体的数据库表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">可以结合使用 </font></span><span><font color="#666666" size="9.0000pt">@Embedded</font></span><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 以建立严格所有权关系的模型,以便在删除了拥有对象的情况下还将删除被拥有的对象。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">嵌入的对象不应映射到多个表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下, </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 类中指定的列定义(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">)适用于 </font></span><span><font color="#666666" size="9.0000pt">@Embedded</font></span><span><font size="9pt"> 类。如果要覆盖这些列定义,请使用 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-17</span></font></u><span><font size="9pt"> 显示了如何使用该批注指定: </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 类 </font></span><span><font color="#666666" size="9.0000pt">EmploymentPeriod</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-16</span></font></u><span><font size="9pt">)可以使用指定的属性覆盖(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="9pt">)嵌入到实体类中。如果不需要属性覆盖,则可以完全忽略 </font></span><span><font color="#666666" size="9.0000pt">@Embedded</font></span><span><font size="9pt"> 批注:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将推断出 </span><span><font color="#666666" size="9.0000pt">EmploymentPeriod</font></span><span><font size="9pt"> 是从它的</font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 批注进行嵌套。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-17 @Embedded</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Embedded</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverrides({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="startDate", column=@Column("EMP_START")),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="endDate", column=@Column("EMP_END"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public EmploymentPeriod getEmploymentPeriod() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@EmbeddedId</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@EmbeddedId</font></span><span><font size="9pt"> 批注指定一个由实体拥有的可嵌入复合主键类(通常由两个或更多基元类型或 </font></span><font size="9pt"><span>JDK </span></font><span>对象类型组成)。从原有数据库映射时(此时数据库键由多列组成),通常将出现复合主键。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">复合主键类具有下列特征:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">105 </font></span><span><font size="9pt">它是一个普通的旧式 </font></span><font size="9pt"><span>Java </span></font><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">106 </font></span><span><font size="9pt">它必须为 </font></span><font size="9pt"><span>public</span></font><span>,并且必须有一个 </span><span><font size="9pt">public </font></span><span>无参数构造函数。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">107 </font></span><span><font size="9pt">如果使用基于属性的访问,则主键类的属性必须为 </font></span><font size="9pt"><span>public </span></font><span>或 </span><span><font size="9pt">protected</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">108 </font></span><span><font size="9pt">它必须是可序列化的。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">109 </font></span><span><font size="9pt">它必须定义 </font></span><span><font color="#666666" size="9.0000pt">equals</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">hashCode</font></span><span><font size="9pt"> 方法。</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> 这些方法的值相等性的语义必须与键映射到的数据库类型的数据库相等性一致。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">或者,您可以使复合主键类成为非嵌入类(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@IdClass</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-18</span></font></u><span><font size="9pt"> 显示了一个批注为 </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 的典型复合主键类。 </font></span><u><span><font color="#0000ff" size="9pt">示例</font></span><font color="#0000ff" size="9pt"><span>1-19</span></font></u><span><font size="9pt"> 显示了如何使用可嵌入的复合主键类(使用 </font></span><span><font color="#666666" size="9.0000pt">@EmbeddedId</font></span><span><font size="9pt"> 批注)配置一个实体。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-18 </span></font><span>可嵌入复合主键类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Embeddable</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class EmployeePK implements Serializable</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private String name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private long id;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public EmployeePK()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public String getName()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setName(String name)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> this.name = name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public long getId()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setId(long id)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> this.id = id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public int hashCode()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return (int) name.hashCode() + id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public boolean equals(Object obj)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (obj == this) return true;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (!(obj instanceof EmployeePK)) return false;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (obj == null) return false;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EmployeePK pk = (EmployeePK) obj;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return pk.id == id && pk.name.equals(name);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-19 @EmbeddedId</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EmployeePK primaryKey;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Employee()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EmbeddedId</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public EmployeePK getPrimaryKey()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return primaryKey;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void setPrimaryKey(EmployeePK pk)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> primaryKey = pk;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Entity</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Entity</font></span><span><font size="9pt"> 批注将普通的旧式 </font></span><font size="9pt"><span>Java </span></font><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类指定为实体,并使其可用于 </span><span><font size="9pt">JPA </font></span><span>服务。必须将 </span><span><font size="9pt">POJO </font></span><span>类指定为实体,然后才可以使用任何其他 </span><span><font size="9pt">JPA </font></span><span>批注。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-11</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-11 @Entity </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体名称是实体类的名称。在 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-20</span></font></u><span><font size="10.5000pt"> 中,默认 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 为</font></span><font size="9pt"><span>“</span></font><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt">”</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果实体类名难于处理、是一个保留字、与事先存在的数据模型不兼容或作为数据库中的表名无效,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为其他 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-20</span></font></u><span><font size="9pt"> 显示了该批注的用法。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-20 @Entity</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@EntityListeners</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">可以使用生命周期批注(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">生命周期事件批注</font></span></u><span><font size="9pt">)指定实体中的方法,这些方法在指定的生命周期事件发生时执行您的逻辑。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@EntityListeners</font></span><span><font size="9pt"> 批注将一个或多个实体监听程序类与 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 关联,条件是您需要在指定的生命周期事件发生时执行逻辑,以及:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">110 </font></span><span><font size="9pt">不希望在实体 </font></span><font size="9pt"><span>API </span></font><span>中公开生命周期监听程序方法。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">111 </font></span><span><font size="9pt">要在不同的实体类型之间共享生命周期监听程序逻辑。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">当实体或子类上发生生命周期事件时,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将按监听程序定义的顺序通知每个实体监听程序,并调用使用相应的生命周期事件类型进行批注的实体监听程序方法(如果有)。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">实体监听程序类具有以下特征:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">112 </font></span><span><font size="9pt">它是一个普通的旧式 </font></span><font size="9pt"><span>Java </span></font><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">113 </font></span><span><font size="9pt">它有一个或多个具有以下签名的回调方法:</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void <MethodName>(Object)</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span><span><br></span></font><span><font size="9pt"> 可以指定参数类型 </font></span><span><font color="#666666" size="9.0000pt">Object</font></span><span><font size="9pt">,或实体监听程序将与其关联的实体类的类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">114 </font></span><span><font size="9pt">它用一个或多个生命周期事件批注对每个回调方法进行批注。</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> 一个生命周期事件只能与一个回调监听程序方法关联,但某个给定的回调监听程序方法可以与多个生命周期事件关联。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用实体监听程序,则可以管理哪些实体监听程序使用 </font></span><u><span><font color="#0000ff" size="9pt">@ExcludeDefaultListeners</font></span></u><span><font size="9pt"> 和</font></span><u><span><font color="#0000ff" size="9pt">@ExcludeSuperclassListeners</font></span></u><span><font size="9pt"> 调用。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-12</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-12 @EntityListeners </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要为 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="10.5000pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="10.5000pt"> 指定实体监听程序类的列表,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为实体监听程序类的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt"> 数组。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-21</span></font></u><span><font size="9pt"> 显示了如何使用此批注将实体监听程序类 </font></span><span><font color="#666666" size="9.0000pt">EmployeePersistListener</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-22</span></font></u><span><font size="9pt">)和 </font></span><span><font color="#666666" size="9.0000pt">EmployeeRemoveListener</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-23</span></font></u><span><font size="9pt">)与实体 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 关联。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-23</span></font></u><span><font size="9pt"> 显示了您可以将多个生命周期事件与给定的实体监听程序类方法关联,但任何给定的生命周期事件只能在实体监听程序类中出现一次。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-21 @EntityListeners</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityListeners(value={EmployeePersistListner.class, EmployeeRemoveListener.class})</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-22 EmployeePersistListener</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">public class EmployeePersistListener {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PrePersist</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> employeePrePersist(Object employee) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-23 EmployeeRemoveListener</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">public class EmployeeRemoveListener {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PreRemove</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PostRemove</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> employeePreRemove(Object employee) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@EntityResult</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">执行 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt"> 时,它可以返回实体(包括不同类型的实体)、标量值或实体和标量值的组合。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@EntityResult</font></span><span><font size="9pt"> 批注返回实体。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关详细信息,另请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@ColumnResult</font></span></u><span><font size="9pt">、 </font></span><u><span><font color="#0000ff" size="9pt">@FieldResult</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-13 @EntityResult </span></font><span>属性</span> </p> <table> <tr> <td style="width: 57.5000pt" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 317.1500pt" width="422"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 57.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">entityClass</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 317.1500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="422"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">entityClass</font></span><span><font size="9pt"> 设置为由 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句返回的实体的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 57.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">discriminatorColumn</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 317.1500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="422"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中不包含标识符列(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Inheritance</font></span></u><span><font size="10.5000pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果在 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中使用标识符列,请将 </font></span><span><font color="#666666" size="9.0000pt">discriminatorColumn</font></span><span><font size="9pt"> 设置为所使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> </td> </tr> <tr> <td style="width: 57.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="76"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fields</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 317.1500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="422"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">FieldResult</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句包含与返回的实体的所有字段或属性相对应的所有列,且 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中的列名对应于字段或属性名(未使用 </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><font size="9pt"><span>SELECT </span></font><span>语句只包含某些与返回的实体的字段或属性相对应的列,或 </span><span><font size="9pt">SELECT </font></span><span>语句中的列名并不对应于字段或属性名(使用了 </span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句),请将</font></span><span><font color="#666666" size="9.0000pt">fields</font></span><span><font size="9pt"> 设置为 </font></span><u><span><font color="#0000ff" size="9pt">@FieldResult</font></span></u><span><font size="10.5000pt"> 的数组, </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中的每一列一个</font></span><u><span><font color="#0000ff" size="9pt">@FieldResult</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-24</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Order</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">Item</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-25</span></font></u><span><font size="9pt">)实体包含在结果列表(请参阅</font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-26</span></font></u><span><font size="9pt">)中。在该示例中,结果列表将为 </font></span><span><font color="#666666" size="9.0000pt">Object</font></span><span><font size="9pt"> 数组的 </font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">,如: </font></span><span><font color="#666666" size="9.0000pt">{[Order, Item], [Order, Item], ...}</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-24 </span></font><span>使用 </span><span><font size="9pt">@EntityResult </font></span><span>的 </span><span><font size="9pt">Order </font></span><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Order.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="order_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="quantity", column="order_quantity"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="item",    column="order_item")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Item.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="item_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="name",    column="item_name"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected long quantity;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Item item;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-25 Item </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Item {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-26 </span></font><span>结合使用 </span><span><font size="9pt">@SqlResultSetMapping </font></span><span>与 </span><span><font size="9pt">@EntityResult </font></span><span>的原生查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query q = entityManager.createNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "SELECT o.id      AS order_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.quantity AS order_quantity, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.item    AS order_item, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.id      AS item_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.name    AS item_name, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "FROM Order o, Item i " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "WHERE (order_quantity > 25) AND (order_item = i.id)",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "OrderResults"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> );</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> List resultList = q.getResultList();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // List of Object arrays:{[Order, Item], [Order, Item], ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Enumerated</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序持久保存枚举常量的序数值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Enumerated</font></span><span><font size="9pt"> 批注指定在 </font></span><font size="9pt"><span>String </span></font><span>值适合应用程序要求或与现有数据库模式匹配的情况下,</span><span><font size="9pt">JPA </font></span><span>持续性提供程序是否应持久保存枚举常量的序数值或 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 值。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">该批注可以与 </font></span><u><span><font color="#0000ff" size="9pt">@Basic</font></span></u><span><font size="9pt"> 一起使用。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-14</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-14 @Enumerated </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">EnumType.ORDINAL</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设对于映射到枚举常量的属性或字段,应持久保存序数值。在 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-28</span></font></u><span><font size="10.5000pt"> 中,当持久保存 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 时, </font></span><span><font color="#666666" size="9.0000pt">EmployeeStatus</font></span><span><font size="9pt"> 的序数值将写入数据库。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要持久保存的枚举常量的 </font></span><font size="9pt"><span>String </span></font><span>值,请将 </span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">EnumType.STRING</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">根据 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-27</span></font></u><span><font size="9pt"> 中的枚举常量, </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-28</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定在持久保存 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 时应将</font></span><span><font color="#666666" size="9.0000pt">SalaryRate</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 值写入数据库。默认情况下,会将 </font></span><span><font color="#666666" size="9.0000pt">EmployeeStatus</font></span><span><font size="9pt"> 的序数值写入数据库。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-27 </span></font><span>枚举常量</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">public enum EmployeeStatus {FULL_TIME, PART_TIME, CONTRACT}</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public enum SalaryRate {JUNIOR, SENIOR, MANAGER, EXECUTIVE}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-28 @Enumerated</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public EmployeeStatus getStatus() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Enumerated(STRING)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public SalaryRate getPayScale() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@ExcludeDefaultListeners</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认监听程序是 </font></span><span><font color="#666666" size="9.0000pt">orm.xml</font></span><span><font size="9pt"> 文件中指定的一个生命周期事件监听程序类,该类应用于持续性单元(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@PersistenceUnit</font></span></u><span><font size="9pt">)中的所有实体。在调用任何其他实体监听程序(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@EntityListeners</font></span></u><span><font size="9pt">)之前,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序首先按照 </span><span><font color="#666666" size="9.0000pt">orm.xml</font></span><span><font size="9pt"> 文件中定义的顺序调用默认监听程序(如果有)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认监听程序行为不适用,请使用 </font></span><span><font color="#666666" size="9.0000pt">@ExcludeDefaultListeners</font></span><span><font size="9pt"> 批注覆盖(并阻止)针对给定</font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 执行的默认监听程序。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-29</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定不应对 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 实体执行默认监听程序。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-29 @ExcludeDefaultListeners</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ExcludeDefaultListeners</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@ExcludeSuperclassListeners</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果继承层次中的 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 类定义了 </font></span><u><span><font color="#0000ff" size="9pt">@EntityListeners</font></span></u><span><font size="9pt">,则默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将在调用子类监听程序之前调用超类监听程序。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果超类监听程序行为不适用,则使用 </font></span><span><font color="#666666" size="9.0000pt">@ExcludeSuperclassListeners</font></span><span><font size="9pt"> 批注覆盖(并阻止)针对给定 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 执行的超类监听程序。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">@ExcludeSuperclassListeners</font></span><span><font size="9pt"> 批注不影响默认监听程序(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@ExcludeDefaultListeners</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-29</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定不应对 </font></span><span><font color="#666666" size="9.0000pt">PartTimeEmployee</font></span><span><font size="9pt"> 实体执行超类监听程序</font></span><span><font color="#666666" size="9.0000pt">EmployeeListener</font></span><span><font size="9pt">,而是执行默认监听程序和子类监听程序 </font></span><span><font color="#666666" size="9.0000pt">PartTimeEmployeeListener1</font></span><span><font size="9pt"> 和</font></span><span><font color="#666666" size="9.0000pt">PartTimeEmployeeListener2</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-30 </span></font><span>超类级别的实体监听程序</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@MappedSuperclass</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityListeners(value={EmployeeListener.class})</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-31 </span></font><span>子类级别的 </span><span><font size="9pt">@ExcludeSuperclassListeners</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ExcludeSuperclassListeners</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityListners(value={PartTimeEmployeeListener1.class, PartTimeEmployeeListener2.class})</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@FieldResult</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">执行 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt"> 时,它可以返回实体(包括不同类型的实体)、标量值或实体和标量值的组合。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设在使用 </span><u><span><font color="#0000ff" size="9pt">@EntityResult</font></span></u><span><font size="9pt"> 返回实体时, </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句将包含与返回的实体的所有字段或属性相对应的所有列,且 </font></span><font size="9pt"><span>SELECT </span></font><span>语句中的列名对应于字段或属性名(未使用 </span><span><font size="9pt">AS </font></span><span>语句)。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句只包含某些与返回的实体的字段或属性相对应的列,或 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中的列名并不对应于字段或属性名(使用了 </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句),则在使用 </font></span><u><span><font color="#0000ff" size="9pt">@EntityResult</font></span></u><span><font size="9pt"> 返回实体时,请使用 </font></span><span><font color="#666666" size="9.0000pt">@FieldResult</font></span><span><font size="9pt">批注将 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中的列映射到字段或属性。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关详细信息,另请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@ColumnResult</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-15</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-15 @FieldResult </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">column</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">column</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句中使用的列的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称。如果在 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 中使用列别名( </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句),请将 </font></span><span><font color="#666666" size="9.0000pt">column</font></span><span><font size="9pt"> 设置为列别名。</font></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为实体的字段或属性名(作为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">),该名称对应于 </font></span><span><font color="#666666" size="9.0000pt">column</font></span><span><font size="9pt"> 属性指定的列名。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-32</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Order</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">Item</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-33</span></font></u><span><font size="9pt">)实体包含在结果列表(请参阅</font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-34</span></font></u><span><font size="9pt">)中。在该示例中,结果列表将为 </font></span><span><font color="#666666" size="9.0000pt">Object</font></span><span><font size="9pt"> 数组的 </font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">,如: </font></span><span><font color="#666666" size="9.0000pt">{[Order, Item], [Order, Item], ...}</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-32 </span></font><span>使用 </span><span><font size="9pt">@EntityResult </font></span><span>和 </span><span><font size="9pt">@FieldResult </font></span><span>的 </span><span><font size="9pt">Order </font></span><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Order.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="order_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="quantity", column="order_quantity"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="item",    column="order_item")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Item.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="item_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="name",    column="item_name"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected long quantity;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Item item;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-33 Item </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Item {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-34 </span></font><span>结合使用 </span><span><font size="9pt">@SqlResultSetMapping </font></span><span>与 </span><span><font size="9pt">@EntityResult </font></span><span>的原生查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query q = entityManager.createNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "SELECT o.id      AS order_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.quantity AS order_quantity, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.item    AS order_item, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.id      AS item_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.name    AS item_name, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "FROM Order o, Item i " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "WHERE (order_quantity > 25) AND (order_item = i.id)",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "OrderResults"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> );</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> List resultList = q.getResultList();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // List of Object arrays:{[Order, Item], [Order, Item], ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@GeneratedValue</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序管理为实体主键提供的唯一标识符(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Id</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要微调此机制以实现以下目的,请使用 </font></span><span><font color="#666666" size="9.0000pt">@GeneratedValue</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">115 </font></span><span><font size="9pt">如果您感觉另一个生成器类型更适合于数据库或应用,则覆盖持续性提供程序为数据库选择的身份值生成的类型</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">116 </font></span><span><font size="9pt">如果此名称难于处理、是一个保留字、与事先存在的数据模型不兼容或作为数据库中的主键生成器名称无效,则覆盖持续性提供程序选择的主键生成器名称</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-16</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-16 @GeneratedValue </span></font><span>属性</span> </p> <table> <tr> <td style="width: 43.6000pt" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 331.0500pt" width="441"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 43.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">generator</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="441"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为它选择的主键生成器分配一个名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该名称难于处理、是一个保留字、与事先存在的数据模型不兼容或作为数据库中的主键生成器名称无效,则将 </font></span><span><font color="#666666" size="9.0000pt">generator</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 生成器名称。</font></span> </p> </td> </tr> <tr> <td style="width: 43.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">strategy</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="441"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">GenerationType.AUTO</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序选择最适合于基础数据库的主键生成器类型。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果您感觉另一个生成器类型更适合于数据库或应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">strategy</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">GeneratorType</font></span><span><font size="9pt">:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">116 </font></span><span><font color="#666666" size="9.0000pt">IDENTITY</font></span><span><font size="9pt"> —</font></span><span>指定持续性提供程序使用数据库身份列</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">116 </font></span><span><font color="#666666" size="9.0000pt">AUTO</font></span><span><font size="9pt"> —</font></span><span>指定持续性提供程序应选择一个最适合于基础数据库的主键生成器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">116 </font></span><span><font color="#666666" size="9.0000pt">SEQUENCE</font></span><span><font size="9pt"> —</font></span><span>指定持续性提供程序使用数据库序列(请参阅</span><span><font size="9pt"> </font></span><u><span><font color="#0000ff" size="10pt">@SequenceGenerator</font></span></u><span><font size="10.5000pt">)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">116 </font></span><span><font color="#666666" size="9.0000pt">TABLE</font></span><span><font size="9pt"> —</font></span><span>指定持续性提供程序为使用基础数据库表的实体分配主键以确保唯一性(请参阅</span><span><font size="9pt"> </font></span><u><span><font color="#0000ff" size="10pt">@TableGenerator</font></span></u><span><font size="10.5000pt">)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-35</span></font></u><span><font size="9pt"> 显示了如何使用此批注指示持续性提供程序使用名为 </font></span><span><font color="#666666" size="9.0000pt">CUST_SEQ</font></span><span><font size="9pt">、类型为</font></span><span><font color="#666666" size="9.0000pt">GeneratorType.SEQUENCE</font></span><span><font size="9pt"> 的主键生成器。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-35 @GeneratedValue</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="CUST_ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Long getId() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Id</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Id</font></span><span><font size="9pt"> 批注将一个或多个持久字段或属性指定为实体的主键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于每个实体,必须至少指定以下项之一:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">117 </font></span><span><font size="9pt">一个 </font></span><span><font color="#666666" size="9.0000pt">@Id</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">118 </font></span><span><font size="9pt">多个 </font></span><span><font color="#666666" size="9.0000pt">@Id</font></span><span><font size="9pt"> 和一个 </font></span><font size="9pt"><u><span>@IdClass</span></u><span>(对于复合主键)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">119 </font></span><span><font size="9pt">一个 </font></span><font size="9pt"><u><span>@EmbeddedId</span></u></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序选择最合适的主键生成器(请参阅 </span><u><span><font color="#0000ff" size="9pt">@GeneratedValue</font></span></u><span><font size="9pt">)并负责管理主键值:您不必采取任何进一步的操作。如果要使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的默认键生成机制,则不必采取任何进一步的操作。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-36</span></font></u><span><font size="9pt"> 显示了如何使用此批注将持久字段 </font></span><span><font color="#666666" size="9.0000pt">empID</font></span><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表的主键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-36 @Id</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private int empID;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@IdClass</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@IdClass</font></span><span><font size="9pt"> 批注为实体指定一个复合主键类(通常由两个或更多基元类型或 </font></span><font size="9pt"><span>JDK </span></font><span>对象类型组成)。从原有数据库映射时(此时数据库键由多列组成),通常将出现复合主键。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">复合主键类具有下列特征:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">120 </font></span><span><font size="9pt">它是一个普通的旧式 </font></span><font size="9pt"><span>Java </span></font><span>对象 </span><span><font size="9pt">(POJO) </font></span><span>类。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">121 </font></span><span><font size="9pt">它必须为 </font></span><font size="9pt"><span>public</span></font><span>,并且必须有一个 </span><span><font size="9pt">public </font></span><span>无参数构造函数。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">122 </font></span><span><font size="9pt">如果使用基于属性的访问,则主键类的属性必须为 </font></span><font size="9pt"><span>public </span></font><span>或 </span><span><font size="9pt">protected</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">123 </font></span><span><font size="9pt">它必须是可序列化的。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">124 </font></span><span><font size="9pt">它必须定义 </font></span><span><font color="#666666" size="9.0000pt">equals</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">hashCode</font></span><span><font size="9pt"> 方法。</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> 这些方法的值相等性的语义必须与键映射到的数据库类型的数据库相等性一致。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">125 </font></span><span><font size="9pt">它的字段或属性的类型和名称必须与使用 </font></span><font size="9pt"><u><span>@Id</span></u><span> 进行批注的实体主键字段或属性的类型和名称相对应。</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">或者,您可以使复合主键类成为由实体拥有的嵌入类(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@EmbeddedId</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-17</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-17 @IdClass </span></font><span>属性</span> </p> <table> <tr> <td style="width: 43.7500pt" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 43.7500pt" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 327.7500pt" width="437"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 43.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 43.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="58"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 327.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="437"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定复合主键类,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-37</span></font></u><span><font size="9pt"> 显示了一个非嵌入的复合主键类。在该类中,字段 </font></span><span><font color="#666666" size="9.0000pt">empName</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">birthDay</font></span><span><font size="9pt"> 的名称和类型必须对应于实体类中属性的名称和类型。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-38</span></font></u><span><font size="9pt"> 显示了如何使用这个非嵌入的复合主键类(使用</font></span><span><font color="#666666" size="9.0000pt">@IdClass</font></span><span><font size="9pt"> 批注)配置 </font></span><font size="9pt"><span>EJB 3.0 </span></font><span>实体。由于实体类字段 </span><span><font color="#666666" size="9.0000pt">empName</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">birthDay</font></span><span><font size="9pt"> 在主键中使用,因此还必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@Id</font></span></u><span><font size="9pt"> 批注对其进行批注。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-37 </span></font><span>非嵌入的复合主键类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">public class EmployeePK implements Serializable</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private String empName;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Date birthDay;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public EmployeePK()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public String getName()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return empName;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setName(String name)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> empName = name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public long getDateOfBirth()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return birthDay;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setDateOfBirth(Date date)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> birthDay = date;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public int hashCode()</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return (int) empName.hashCode();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public boolean equals(Object obj)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (obj == this) return true;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (!(obj instanceof EmployeePK)) return false;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> if (obj == null) return false;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EmployeePK pk = (EmployeePK) obj;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return pk.birthDay == birthDay && pk.empName.equals(empName);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-38 @IdClass</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@IdClass(EmployeePK.class)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id String empName;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id Date birthDay;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Inheritance</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序自动管理继承层次中实体的持续性。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Inheritance</font></span><span><font size="9pt"> 批注自定义持续性提供程序的继承层次支持,以提高应用程序性能或匹配现有的数据模型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-18</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-18 @Inheritance </span></font><span>属性</span> </p> <table> <tr> <td style="width: 42.6000pt" width="56"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 332.1000pt" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 42.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="56"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">strategy</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 332.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.SINGLE_TABLE</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设层次中的所有类均映射到一个由表的标识符列(请参阅 </span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="10.5000pt">)中的标识符值(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="10.5000pt">)区分的表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这并不适合于应用程序,或者如果必须匹配现有的数据模型,请将 </font></span><span><font color="#666666" size="9.0000pt">strategy</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType</font></span><span><font size="9pt">:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">125 </font></span><span><font color="#666666" size="9.0000pt">SINGLE_TABLE</font></span><span><font size="9pt"> </font></span><u><span><font color="#0000ff" size="10pt">Foot?1? </font></span></u><span><font size="10.5000pt">— </font></span><font size="10.5000pt"><span>层次中的所有类均映射到一个表。该表有一个标识符列(请参阅 </span></font><u><span><font color="#0000ff" size="10pt">@DiscriminatorColumn</font></span></u><span><font size="10.5000pt">),它的值(请参阅 </font></span><u><span><font color="#0000ff" size="10pt">@DiscriminatorValue</font></span></u><span><font size="10.5000pt">)标识由行表示的实例所属的特定子类。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">125 </font></span><span><font color="#666666" size="9.0000pt">TABLE_PER_CLASS</font></span><span><font size="9pt"> —</font></span><span>每个类均映射到单独的表。该类的所有属性(包括继承的属性)映射到该类的表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">125 </font></span><span><font color="#666666" size="9.0000pt">JOINED</font></span><span><font size="9pt"> —</font></span><span>类层次的根由一个表表示,而每个子类由单独的表表示。每个子类表只包含特定于该子类的那些字段(而</span><span><font size="9pt">非从其超类继承的字段)和主键列,这些主键列用作超类表主键的外键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><sup><font size="9pt">Footnote?1?</font></sup></span><span>该选项为跨类层次的实体和查询之间的多态关系提供了最佳支持。该选项的缺点包括需要生成应为 </span><span><sup><font color="#666666" size="9.0000pt">NOT NULL</font></sup></span><sup><span><font size="9pt"> 的可空列。</font></span></sup> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-39</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 的所有子类将使用 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.JOINED</font></span><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-40</span></font></u><span><font size="9pt"> 中的子类将映射到它自己的表(该表针对 </font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt"> 的每个持久属性包含一列)和一个外键列(包含 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 表的主键)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-39 @Inheritance </span><span>— </span></font><span>使用 </span><span><font size="9pt">JOINED </font></span><span>的根类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity@Inheritance(strategy=JOINED)public class Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private int customerId;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-40 @Inheritance </span><span>— </span></font><span>使用 </span><span><font size="9pt">JOINED </font></span><span>的子类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-41</span></font></u><span><font size="9pt"> 中,默认情况下, </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.SINGLE_TABLE</font></span><span><font size="9pt"> 应用于 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 及其所有子类。在该示例中,默认标识符表列 </font></span><span><font color="#666666" size="9.0000pt">DTYPE</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorColumn</font></span></u><span><font size="9pt">)指定为具有标识符类型</font></span><span><font color="#666666" size="9.0000pt">INTEGER</font></span><span><font size="9pt">,且 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 的 </font></span><u><span><font color="#0000ff" size="9pt">@DiscriminatorValue</font></span></u><span><font size="9pt"> 指定为 </font></span><span><font color="#666666" size="9.0000pt">1</font></span><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-42</span></font></u><span><font size="9pt"> 显示了如何将子类</font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt"> 的标识符值指定为 </font></span><span><font color="#666666" size="9.0000pt">2</font></span><span><font size="9pt">。在该示例中, </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt"> 的所有持久属性将映射到一个表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-41 @Inheritance </span><span>— </span></font><span>指定其标识符列的根类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorColumn(discriminatorType=DiscriminatorType.INTEGER)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value="1")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-42 @Inheritance </span><span>— </span></font><span>指定其标识符值的子类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue(value="2")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@JoinColumn</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,在实体关联中,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用一个基于现有名称(如字段或属性名称)的数据库模式,以便它可以自动确定要使用的单个连接列(包含外键的列)。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在以下条件下使用 </font></span><span><font color="#666666" size="9.0000pt">@JoinColumn</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">126 </font></span><span><font size="9pt">默认连接列名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的列名无效</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">127 </font></span><span><font size="9pt">您需要使用外部表中的列(非主键列)进行连接</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">128 </font></span><span><font size="9pt">您想要使用两个或更多连接列(请参阅 </font></span><font size="9pt"><u><span>@JoinColumns</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">129 </font></span><span><font size="9pt">您想要使用一个连接表(请参阅 </font></span><font size="9pt"><u><span>@JoinTable</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-19</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-19 @JoinColumn </span></font><span>属性</span> </p> <table> <tr> <td style="width: 64.2500pt" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 310.4000pt" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columnDefinition</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">JPA </font></span><span>使用最少量 </span><span><font size="9pt">SQL </font></span><span>创建一个数据库表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要使用更多指定选项创建列,请将 </font></span><span><font color="#666666" size="9.0000pt">columnDefinition</font></span><span><font size="9pt"> 设置为在针对列生成 </font></span><font size="9pt"><span>DDL </span></font><span>时希望 </span><span><font size="9pt">JPA </font></span><span>使用的 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> SQL </font></span><span>片断。</span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">insertable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设它可以插入到所有表列中。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列为只读,请将 </font></span><span><font color="#666666" size="9.0000pt">insertable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:如果使用一个连接列,则 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设外键列的名称是以下名称的连接:</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">129 </font></span><span><font size="9pt">引用关系属性的名称 </font></span><font size="9pt"><span>+</span><span>“</span><span>_</span><span>”</span><span>+ </span></font><span>被引用的主键列的名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">129 </font></span><span><font size="9pt">引用实体的字段名称 </font></span><font size="9pt"><span>+</span><span>“</span><span>_</span><span>”</span><span>+ </span></font><span>被引用的主键列的名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果实体中没有这样的引用关系属性或字段(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@JoinTable</font></span></u><span><font size="10.5000pt">),则连接列名称格式化为以下名称的连接:实体名称 </font></span><font size="10.5000pt"><span>+</span><span>“</span><span>_</span><span>”</span><span>+ </span><span>被引用的主键列的名称。</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">这是外键列的名称。如果连接针对</font></span><font size="9pt"><span>“</span></font><span>一对一</span><span><font size="9pt">”</font></span><span>或</span><span><font size="9pt">“</font></span><span>多对一</span><span><font size="9pt">”</font></span><span>实体关系,则该列位于源实体的表中。如果连接针对</span><span><font size="9pt">“</font></span><span>多对多</span><span><font size="9pt">”</font></span><span>实体关系,则该列位于连接表(请参阅 </span><u><span><font color="#0000ff" size="9pt">@JoinTable</font></span></u><span><font size="10.5000pt">)中。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果连接列名难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的列名无效,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">nullable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设允许所有列包含空值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不允许该列包含空值,请将 </font></span><span><font color="#666666" size="9.0000pt">nullable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">referencedColumnName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:如果使用一个连接列,则 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设在实体关系中,被引用的列名是被引用的主键列的名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果在连接表(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@JoinTable</font></span></u><span><font size="10.5000pt">)中使用,则被引用的键列位于拥有实体(如果连接是反向连接定义的一部分,则为反向实体)的实体表中。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定其他列名,请将 </font></span><span><font color="#666666" size="9.0000pt">referencedColumnName</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">列名。</font></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">table</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有持久字段存储到一个名称为实体类名称的数据库表中(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Table</font></span></u><span><font size="10.5000pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列与辅助表关联(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@SecondaryTable</font></span></u><span><font size="10.5000pt">),请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为相应辅助表名称的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称,如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="10.5000pt"> 所示。</font></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">unique</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设允许所有列包含重复值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果不允许该列包含重复值,请将 </font></span><span><font color="#666666" size="9.0000pt">unique</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 64.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="85"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">updatable</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 310.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="413"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设它可以更新所有表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该列为只读,则将 </font></span><span><font color="#666666" size="9.0000pt">updatable</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-43</span></font></u><span><font size="9pt"> 显示了如何使用此批注使 </font></span><font size="9pt"><span>JPA </span></font><span>将数据库表 </span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 列 </font></span><span><font color="#666666" size="9.0000pt">ADDR_ID</font></span><span><font size="9pt"> 用作连接列。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-43 @JoinColumn</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="ADDR_ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Address getAddress() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return address;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@JoinColumns</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,在实体关联中,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设使用一个连接列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要指定两个或更多连接列(即复合主键),请使用 </font></span><span><font color="#666666" size="9.0000pt">@JoinColumns</font></span><span><font size="9pt"> 批注。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-20</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-20 @JoinColumns </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多连接列,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt"> 实例数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-44</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个连接列的名称: </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表中的 </font></span><span><font color="#666666" size="9.0000pt">ADDR_ID</font></span><span><font size="9pt">(其中包含</font></span><span><font color="#666666" size="9.0000pt">Address</font></span><span><font size="9pt"> 表列 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span><span><font size="9pt"> 中的外键值)以及 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表中的 </font></span><span><font color="#666666" size="9.0000pt">ADDR_ZIP</font></span><span><font size="9pt">(其中包含 </font></span><span><font color="#666666" size="9.0000pt">Address</font></span><span><font size="9pt"> 表列 </font></span><span><font color="#666666" size="9.0000pt">ZIP</font></span><span><font size="9pt"> 中的外键值)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-44 @JoinColumns</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumns({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="ADDR_ID", referencedColumnName="ID"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Address getAddress() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return address;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@JoinTable</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序在映射多对多关联(或在单向的一对多关联中)的拥有方上的实体关联时使用一个连接表。连接表名称及其列名均在默认情况下指定,且 </span><span><font size="9pt">JPA </font></span><span>持续性提供程序假设:在关系的拥有方上的实体主表中,每个主键列有一个连接列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果您需要执行以下操作,请使用 </font></span><span><font color="#666666" size="9.0000pt">@JoinTable</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">130 </font></span><span><font size="9pt">由于默认名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的表名无效而更改连接表的名称</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">131 </font></span><span><font size="9pt">由于默认名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的列名无效而更改连接表的列名称</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">132 </font></span><span><font size="9pt">使用特定目录或模式配置连接表</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">133 </font></span><span><font size="9pt">使用唯一约束配置一个或多个连接表列</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">134 </font></span><span><font size="9pt">每个实体使用多个连接列</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-21</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-21 @JoinTable </span></font><span>属性</span> </p> <table> <tr> <td style="width: 59.8000pt" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 314.9000pt" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">catalog</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>使用任何适用于数据库的默认目录。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认目录不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">catalog</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 目录名。</font></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">inverseJoinColumns</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设关联的被拥有方(或另一方)上有一个连接列:被拥有实体的主键列。</span><span><font size="9pt">JPA </font></span><span>通过连接被拥有实体的名称 </span><span><font size="9pt">+</font></span><font size="9pt"><span>“</span><span>_</span><span>”</span><span>+ </span></font><span>被引用的主键列的名称来命名该列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这样的列名难于处理、是一个保留字、与预先存在的数据模型不兼容,或者如果要指定多个连接列,则将 </font></span><span><font color="#666666" size="9.0000pt">joinColumns</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="10.5000pt">)的一个或多个实例。</font></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">joinColumns</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设:拥有实体的每个主键列都有一个连接列。该持续性提供程序通过连接拥有实体的名称</span><span><font size="9pt">+</font></span><font size="9pt"><span>“</span><span>_</span><span>”</span><span>+ </span></font><span>被引用主键列的名称来命名这些列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这样的列名难于处理、是一个保留字、与预先存在的数据模型不兼容,或者如果要指定多个连接列,则将 </font></span><span><font color="#666666" size="9.0000pt">joinColumns</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">JoinColumn</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@JoinColumn</font></span></u><span><font size="10.5000pt">)的一个或多个实例。</font></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序通过使用下划线连接关联主表(拥有方优先)的表名来命名连接表。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这样的连接表难于处理、是一个保留字或与预先存在的数据模型不兼容,则将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为相应的连接表名。在 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-45</span></font></u><span><font size="10.5000pt"> 中,</font></span><font size="10.5000pt"><span>JPA </span><span>使用名为</span></font><span><font color="#666666" size="9.0000pt">EJB_PROJ_EMP</font></span><span><font size="9pt"> 的连接表。</font></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">schema</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>使用任何适用于数据库的默认模式。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认模式不适合于应用程序,则将 </font></span><span><font color="#666666" size="9.0000pt">schema</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 模式名。</font></span> </p> </td> </tr> <tr> <td style="width: 59.8000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">uniqueConstraints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 314.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="419"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">UniqueConstraint</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设连接表中的任何列均没有唯一约束。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果唯一约束应用于该表中的一列或多列,则将 </font></span><span><font color="#666666" size="9.0000pt">uniqueContraints</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">UniqueConstraint</font></span><span><font size="9pt"> 实例的数组。有关详细信息,请参阅</font></span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-45</span></font></u><span><font size="9pt"> 显示了如何使用此批注为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 与 </font></span><span><font color="#666666" size="9.0000pt">Project</font></span><span><font size="9pt"> 之间实体的多对多关系指定一个名为</font></span><span><font color="#666666" size="9.0000pt">EMP_PROJ_EMP</font></span><span><font size="9pt"> 的连接表。连接表中有两列: </font></span><span><font color="#666666" size="9.0000pt">EMP_ID</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">PROJ_ID</font></span><span><font size="9pt">。 </font></span><span><font color="#666666" size="9.0000pt">EMP_ID</font></span><span><font size="9pt"> 列包含其主键列(被引用列)名为 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 表中的主键值。 </font></span><span><font color="#666666" size="9.0000pt">PROJ_ID</font></span><span><font size="9pt"> 列包含其主键列(被引用列)也名为 </font></span><span><font color="#666666" size="9.0000pt">ID</font></span><span><font size="9pt"> 的</font></span><span><font color="#666666" size="9.0000pt">Project</font></span><span><font size="9pt"> 表中的主键值。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-45 @JoinTable</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToMany</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinTable(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="EJB_PROJ_EMP",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> joinColumns=@JoinColumn(name="EMP_ID", referencedColumnName="ID"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> inverseJoinColumns=@JoinColumn(name="PROJ_ID", referencedColumnName="ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Collection getProjects() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return projects;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Lob</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有持久数据均可以表示为典型的数据库数据类型。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">结合使用 </font></span><span><font color="#666666" size="9.0000pt">@Lob</font></span><span><font size="9pt"> 批注与 </font></span><u><span><font color="#0000ff" size="9pt">@Basic</font></span></u><span><font size="9pt"> 映射,以指定持久属性或字段应作为大型对象持久保存到数据库支持的大型对象类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Lob </font></span><span>可以是二进制类型或字符类型。持续性提供程序从持久字段或属性的类型推断出 </span><span><font size="9pt">Lob </font></span><span>类型。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于基于字符串和字符的类型,默认值为 </font></span><font size="9pt"><span>Clob</span></font><span>。在所有其他情况下,默认值为 </span><span><font size="9pt">Blob</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">还可以使用 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">columnDefinition</font></span><span><font size="9pt"> 进一步改进 </font></span><span><font color="#666666" size="9.0000pt">Lob</font></span><span><font size="9pt"> 类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-46</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定持久字段 </font></span><span><font color="#666666" size="9.0000pt">pic</font></span><span><font size="9pt"> 应作为 </font></span><span><font color="#666666" size="9.0000pt">Blob</font></span><span><font size="9pt"> 进行持久保存。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-46 @Lob</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Lob</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Basic(fetch=LAZY)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="EMP_PIC", columnDefinition="BLOB NOT NULL")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected byte[] pic;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@ManyToMany</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>为具有多对多多重性的为多值关联自动定义一个 </span><span><font color="#666666" size="9.0000pt">@ManyToMany</font></span><span><font size="9pt"> 映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@ManyToMany</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">135 </font></span><span><font size="9pt">将获取类型配置为 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">136 </font></span><span><font size="9pt">如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">137 </font></span><span><font size="9pt">由于所使用的 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 不是使用一般参数定义的,因此配置关联的目标实体</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">138 </font></span><span><font size="9pt">配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还删除关联的目标</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">139 </font></span><span><font size="9pt">配置由持续性提供程序使用的连接表的详细信息(请参阅 </font></span><font size="9pt"><u><span>@JoinTable</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-22</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-22 @ManyToMany </span></font><span>属性</span> </p> <table> <tr> <td style="width: 51.6000pt" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 323.0500pt" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">cascade</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>不会将任何持续性操作层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望某些或所有持续性操作层叠到关联的目标,请将 </font></span><span><font color="#666666" size="9.0000pt">cascade</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 实例,其中包括:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">139 </font></span><span><font color="#666666" size="9.0000pt">ALL</font></span><span><font size="9pt"> —</font></span><span>针对拥有实体执行的任何持续性操作均层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">139 </font></span><span><font color="#666666" size="9.0000pt">MERGE</font></span><span><font size="9pt"> —</font></span><span>如果合并了拥有实体,则将</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">merge</font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">139 </font></span><span><font color="#666666" size="9.0000pt">PERSIST</font></span><span><font size="9pt"> —</font></span><span>如果持久保存拥有实体,则将</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">persist</font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">139 </font></span><span><font color="#666666" size="9.0000pt">REFRESH</font></span><span><font size="9pt"> —</font></span><span>如果刷新了拥有实体,则</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">refresh</font></span><span>为关联的层叠目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">139 </font></span><span><font color="#666666" size="9.0000pt">REMOVE</font></span><span><font size="9pt"> —</font></span><span>如果删除了拥有实体,则还删除关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fetch</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">FetchType.EAGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用获取类型 </span><span><font color="#666666" size="9.0000pt">EAGER</font></span><span><font size="9pt">:这将要求持续性提供程序运行时必须迫切获取数据。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这不适合于应用程序或特定的持久字段,请将 </font></span><span><font color="#666666" size="9.0000pt">fetch</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">FetchType.LAZY</font></span><span><font size="9pt">:这将提示持续性提供程序在首次访问数据(如果可以)时应不急于获取数据。</font></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">mappedBy</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:如果关系是单向的,则 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序确定拥有该关系的字段。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果关系是双向的,则将关联的反向(非拥有)一方上的 </font></span><span><font color="#666666" size="9.0000pt">mappedBy</font></span><span><font size="9pt"> 属性设置为拥有该关系的字段或属性的名称(如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-48</span></font></u><span><font size="10.5000pt"> 所示)。</font></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">targetEntity</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:使用一般参数定义的 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 的参数化类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,如果使用通过一般参数定义的 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt">,则持续性提供程序将从被引用的对象类型推断出关联的目标实体。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 不使用一般参数,则必须指定作为关联目标的实体类:将关联拥有方上的 </font></span><span><font color="#666666" size="9.0000pt">targetEntity</font></span><span><font size="9pt"> 元素设置为作为关系目标的实体的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-47</span></font></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-48</span></font></u><span><font size="9pt"> 显示了如何使用此批注在使用一般参数的 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">PhoneNumber</font></span><span><font size="9pt"> 之间配置一个多对多映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-47 @ManyToMany </span><span>— </span></font><span>使用一般参数的 </span><span><font size="9pt">Customer </font></span><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToMany</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinTable(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="CUST_PHONE",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> joinColumns=</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="CUST_ID", referencedColumnName="ID"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> inverseJoinColumns=</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="PHONE_ID", referencedColumnName="ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Set<PhoneNumber> getPhones() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return phones;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-48 @ManyToMany </span><span>— </span></font><span>使用一般参数的 </span><span><font size="9pt">PhoneNumber </font></span><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PhoneNumber implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToMany(mappedBy="phones")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Set<Customer> getCustomers() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return customers;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@ManyToOne</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>为指向具有多对一多重性的其他实体类的单值关联自动定义一个 </span><span><font color="#666666" size="9.0000pt">ManyToOne</font></span><span><font size="9pt"> 映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@ManyToOne</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">140 </font></span><span><font size="9pt">将获取类型配置为 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">141 </font></span><span><font size="9pt">如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">142 </font></span><span><font size="9pt">配置关联的目标实体(如果无法从被引用的对象类型推断出它)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">143 </font></span><span><font size="9pt">配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还删除关联的目标</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-23</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-23 @ManyToOne </span></font><span>属性</span> </p> <table> <tr> <td style="width: 51.6000pt" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 323.0500pt" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">cascade</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>不会将任何持续性操作层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望某些或所有持续性操作层叠到关联的目标,请将 </font></span><span><font color="#666666" size="9.0000pt">cascade</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 实例,其中包括:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">143 </font></span><span><font color="#666666" size="9.0000pt">ALL</font></span><span><font size="9pt"> —</font></span><span>针对拥有实体执行的任何持续性操作均层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">143 </font></span><span><font color="#666666" size="9.0000pt">MERGE</font></span><span><font size="9pt"> —</font></span><span>如果合并了拥有实体,则将</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">merge</font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">143 </font></span><span><font color="#666666" size="9.0000pt">PERSIST</font></span><span><font size="9pt"> —</font></span><span>如果持久保存拥有实体,则将</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">persist</font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">143 </font></span><span><font color="#666666" size="9.0000pt">REFRESH</font></span><span><font size="9pt"> —</font></span><span>如果刷新了拥有实体,则</span><span><font color="#666666" size="10.0000pt"> </font></span><span><font size="9pt">refresh</font></span><span>为关联的层叠目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">143 </font></span><span><font color="#666666" size="9.0000pt">REMOVE</font></span><span><font size="9pt"> —</font></span><span>如果删除了拥有实体,则还删除关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fetch</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">FetchType.EAGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用获取类型 </span><span><font color="#666666" size="9.0000pt">EAGER</font></span><span><font size="9pt">:这将要求持续性提供程序运行时必须迫切获取数据。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这不适合于应用程序或特定的持久字段,请将 </font></span><span><font color="#666666" size="9.0000pt">fetch</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">FetchType.LAZY</font></span><span><font size="9pt">:这将提示持续性提供程序在首次访问数据(如果可以)时应不急于获取数据。</font></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">optional</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有(非基元)字段和属性的值可以为空。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这并不适合于您的应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">optional</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 51.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">targetEntity</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序从被引用的对象类型推断出关联的目标实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果持续性提供程序无法推断出目标实体的类型,则将关联拥有方上的</font></span><span><font color="#666666" size="9.0000pt">targetEntity</font></span><span><font size="9pt"> 元素设置为作为关系目标的实体的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-49</span></font></u><span><font size="9pt"> 显示了如何使用此批注在使用一般参数的 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt">(被拥有方)和 </font></span><span><font color="#666666" size="9.0000pt">Order</font></span><span><font size="9pt">(拥有方)之间配置一个多对一映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-49 @ManyToOne</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne(optional=false)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="CUST_ID", nullable=false, updatable=false)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Customer getCustomer() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return customer;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@MapKey</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设关联实体的主键为 </span><span><font color="#666666" size="9.0000pt">java.util.Map</font></span><span><font size="9pt"> 类型的关联的 </font></span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">144 </font></span><span><font size="9pt">如果主键是批注为 </font></span><font size="9pt"><u><span>@Id</span></u><span> 的非复合主键,则该字段或属性的类型实例将用作 </span></font><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">145 </font></span><span><font size="9pt">如果主键是批注为 </font></span><font size="9pt"><u><span>@IdClass</span></u><span> 的复合主键,则主键类的实例将用作 </span></font><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@MapKey</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">146 </font></span><span><font size="9pt">将某个其他字段或属性指定为 </font></span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键(如果关联实体的主键不适合于应用程序)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">147 </font></span><span><font size="9pt">指定一个嵌入的复合主键类(请参阅 </font></span><font size="9pt"><u><span>@EmbeddedId</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">指定的字段或属性必须具有唯一约束(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-24</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-24 @MapKey </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将关联实体的主键作为 </span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键,以用于映射到非复合主键或复合主键(批注为 </font></span><u><span><font color="#0000ff" size="9pt">@IdClass</font></span></u><span><font size="10.5000pt">)的 </font></span><span><font color="#666666" size="9.0000pt">java.util.Map</font></span><span><font size="9pt"> 的属性或字段。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要将某个其他字段或属性用作 </font></span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 键,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为要使用的关联实体的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 字段或属性名。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-52</span></font></u><span><font size="9pt"> 中,</font></span><font size="9pt"><span>Project </span></font><span>对作为 </span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 实例拥有一对多关系。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-52</span></font></u><span><font size="9pt"> 显示了如何使用</font></span><span><font color="#666666" size="9.0000pt">@MapKey</font></span><span><font size="9pt"> 批注指定此 </font></span><span><font color="#666666" size="9.0000pt">Map</font></span><span><font size="9pt"> 的键为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 字段 </font></span><span><font color="#666666" size="9.0000pt">empPK</font></span><span><font size="9pt">,它是一个类型为 </font></span><span><font color="#666666" size="9.0000pt">EmployeePK</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-52</span></font></u><span><font size="9pt">)的嵌入式复合主键(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-51</span></font></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-50 </span></font><span>使用 </span><span><font size="9pt">@MapKey </font></span><span>的 </span><span><font size="9pt">Project </font></span><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entitypublic class Project {   ...@OneToMany(mappedBy="project")   @MapKey(name="empPK")   public Map<EmployeePK, Employee> getEmployees() {   ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }   ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-51 Employee </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entitypublic class Employee {   @EmbeddedId public EmployeePK getEmpPK() {    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }   ...   @ManyToOne   @JoinColumn(name="proj_id")   public Project getProject() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-52 EmployeePK </span></font><span>复合主键类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Embeddablepublic class EmployeePK {   String name;   Date birthDate;}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@MappedSuperclass</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有持久字段均在该实体中定义。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@MappedSuperclass</font></span><span><font size="9pt"> 批注指定一个实体类从中继承持久字段的超类。当多个实体类共享通用的持久字段或属性时,这将是一个方便的模式。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">您可以像对实体那样使用任何直接和关系映射批注(如 </font></span><u><span><font color="#0000ff" size="9pt">@Basic</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@ManyToMany</font></span></u><span><font size="9pt">)对该超类的字段和属性进行批注,但由于没有针对该超类本身的表存在,因此这些映射只适用于它的子类。继承的持久字段或属性属于子类的表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">可以在子类中使用 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@AssociationOverride</font></span></u><span><font size="9pt"> 批注来覆盖超类的映射配置。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">该批注没有属性。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-53</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 指定为映射超类。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-54</span></font></u><span><font size="9pt"> 显示了如何扩展实体中的此超类,以及如何在实体类中使用 </font></span><u><span><font color="#0000ff" size="9pt">@AttributeOverride</font></span></u><span><font size="9pt"> 以覆盖超类中设置的配置。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-53 @MappedSuperclass</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@MappedSuperclass</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Integer empId;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Version</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Integer version;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="ADDR")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Address address;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Integer getEmpId() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void setEmpId(Integer id) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Address getAddress() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">  </font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void setAddress(Address addr) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-54 </span></font><span>扩展 </span><span><font size="9pt">@MappedSuperclass</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @AttributeOverride(name="address", column=@Column(name="ADDR_ID"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Column(name="WAGE")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Float hourlyWage;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public PartTimeEmployee() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public Float getHourlyWage() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> public void setHourlyWage(Float wage) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@NamedNativeQueries</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt">,则必须使用一个 </font></span><span><font color="#666666" size="9.0000pt">@NamedNativeQueries</font></span><span><font size="9pt"> 批注指定所有命名查询。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-25 @NamedNativeQueries </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多属性覆盖,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">NamedNativeQuery</font></span><span><font size="9pt"> 实例数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个命名原生查询。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-55 @NamedNativeQueries</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedNativeQueries({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllPartTimeEmployees",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT * FROM EMPLOYEE WHERE PRT_TIME=1"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllSeasonalEmployees",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT * FROM EMPLOYEE WHERE SEASON=1"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@NamedNativeQuery</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的应用程序中,可以使用实体管理器动态创建和执行查询,也可以预定义查询并在运行时按名称执行。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@NamedNativeQuery</font></span><span><font size="9pt"> 批注创建与 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 关联的预定义查询,这些查询:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">148 </font></span><span><font size="9pt">使用基础数据库的原生 </font></span><font size="9pt"><span>SQL</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">149 </font></span><span><font size="9pt">经常被使用</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">150 </font></span><span><font size="9pt">比较复杂并且难于创建</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">151 </font></span><span><font size="9pt">可以在不同实体之间共享</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">152 </font></span><span><font size="9pt">返回实体、标量值或两者的组合(另请参阅 </font></span><font size="9pt"><u><span>@ColumnResult</span></u><span>、 </span><u><span>@EntityResult</span></u><span>、 </span><u><span>@FieldResult</span></u><span> 和</span><u><span>@SqlResultSetMapping</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要定义的 </font></span><span><font color="#666666" size="9.0000pt">@NamedNativeQuery</font></span><span><font size="9pt">,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQueries</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要预定义适合于任何数据库的可移植查询,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@NamedQuery</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-26 @NamedNativeQuery </span></font><span>属性</span> </p> <table> <tr> <td style="width: 53.7500pt" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 320.9000pt" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 53.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">query</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 320.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定查询,请将 </font></span><span><font color="#666666" size="9.0000pt">query</font></span><span><font size="9pt"> 设置为 </font></span><font size="9pt"><span>SQL </span></font><span>查询(作为 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询语言的详细信息,请参阅数据库文档。</span> </p> </td> </tr> <tr> <td style="width: 53.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">hints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 320.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">QueryHint</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font size="9pt">SQL </font></span><span>查询应完全按照 </span><span><font color="#666666" size="9.0000pt">query</font></span><span><font size="9pt"> 属性提供的方式执行。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要微调查询的执行,可以选择将 </font></span><span><font color="#666666" size="9.0000pt">hints</font></span><span><font size="9pt"> 设置为一个 </font></span><span><font color="#666666" size="9.0000pt">QueryHint</font></span><span><font size="9pt"> 数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@QueryHint</font></span></u><span><font size="10.5000pt">)。在执行时, </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 将向基础数据库传递提示。</font></span> </p> </td> </tr> <tr> <td style="width: 53.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 320.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定查询名称,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">这是您在运行时调用查询所使用的名称(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-60</span></font></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> <tr> <td style="width: 53.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">resultClass</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 320.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设结果类是关联实体的 </span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定结果类,请将 </font></span><span><font color="#666666" size="9.0000pt">resultClass</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 53.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="71"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">resultSetMapping</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 320.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="427"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设原生 </span><span><font size="9pt">SQL </font></span><span>查询中的 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句:返回一个类型的实体;包括与返回的实体的所有字段或属性相对应的所有列;并使用与字段或属性名称(未使用 </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句)相对应的列名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要控制 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序如何将 </span><span><font size="9pt">JDBC </font></span><span>结果集映射到实体字段或属性以及标量,请通过将 </span><span><font color="#666666" size="9.0000pt">resultSetMapping</font></span><span><font size="9pt"> 设置为所需的 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="10.5000pt"> 的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称来指定结果集映射。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-59</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@NamedNativeQuery</font></span><span><font size="9pt"> 批注定义一个使用基础数据库的原生 </font></span><font size="9pt"><span>SQL </span></font><span>的查询。 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-60</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 获取此查询以及如何通过 </font></span><span><font color="#666666" size="9.0000pt">Query</font></span><span><font size="9pt"> 方法 </font></span><span><font color="#666666" size="9.0000pt">getResultList</font></span><span><font size="9pt"> 执行该查询。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-56 </span></font><span>使用 </span><span><font size="9pt">@NamedNativeQuery </font></span><span>实现一个 </span><span><font size="9pt">Oracle </font></span><span>层次查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllEmployees",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT * FROM EMPLOYEE"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-57 </span></font><span>执行一个命名原生查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query queryEmployees = em.createNamedQuery("findAllEmployees");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Collection employees = queryEmployees.getResultList();</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@NamedQueries</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@NamedQuery</font></span></u><span><font size="9pt">,则必须使用一个 </font></span><span><font color="#666666" size="9.0000pt">@NamedQueries</font></span><span><font size="9pt"> 批注指定所有命名查询。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-27 @NamedQueries </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多属性覆盖,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">NamedQuery</font></span><span><font size="9pt"> 实例数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@NamedQuery</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个命名查询。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-58 @NamedQueries</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedQueries({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllEmployeesByFirstName",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = :firstname"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllEmployeesByLasttName",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT OBJECT(emp) FROM Employee emp WHERE emp.lasstName = :lastname"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class PartTimeEmployee extends Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@NamedQuery</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的应用程序中,可以使用实体管理器动态创建和执行查询,也可以预定义查询并在运行时按名称执行。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@NamedQuery</font></span><span><font size="9pt"> 批注创建与 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 关联的预定义查询,这些查询:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">153 </font></span><span><font size="9pt">使用 </font></span><font size="9pt"><span>JPA </span></font><span>查询语言(请参阅 </span><u><span><font size="9pt">JSR-000220 Enterprise JavaBeans v3.0</font></span></u><font size="9pt"><span> 规范,第 </span><span>4 </span></font><span>章)进行基于任何基础数据库的可移植执行</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">154 </font></span><span><font size="9pt">经常被使用</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">155 </font></span><span><font size="9pt">比较复杂并且难于创建</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">156 </font></span><span><font size="9pt">可以在不同实体之间共享</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">157 </font></span><span><font size="9pt">只返回实体(从不返回标量值),并只返回一个类型的实体</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要定义的 </font></span><span><font color="#666666" size="9.0000pt">@NamedQuery</font></span><span><font size="9pt">,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@NamedQueries</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要在已知的基础数据库中预定义原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询,请参阅 </span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt">。使用原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询,您可以返回实体(包括不同类型的实体)、标量值或同时返回两者。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-28 @NamedQuery </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">query</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定查询,请将 </font></span><span><font color="#666666" size="9.0000pt">query</font></span><span><font size="9pt"> 设置为 </font></span><font size="9pt"><span>JPA </span></font><span>查询语言(作为 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关 </font></span><font size="9pt"><span>JPA </span></font><span>查询语言的详细信息,请参阅 </span><u><span><font color="#0000ff" size="9pt">JSR-000220 Enterprise JavaBeans v.3.0</font></span></u><span><font size="10.5000pt"> 规范的第 </font></span><font size="10.5000pt"><span>4 </span><span>章。</span></font> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">hints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">QueryHint</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font size="9pt">SQL </font></span><span>查询应完全按照 </span><span><font color="#666666" size="9.0000pt">query</font></span><span><font size="9pt"> 属性提供的方式执行,而不管基础数据库如何。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果您知道基础数据库在运行时的状态,则要微调查询的执行,可以选择将 </font></span><span><font color="#666666" size="9.0000pt">hints</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">QueryHint</font></span><span><font size="9pt"> 数组(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@QueryHint</font></span></u><span><font size="10.5000pt">)。在执行时, </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 将向基础数据库传递提示。</font></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定查询名称,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为查询名称(作为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">这是您在运行时调用查询所使用的名称(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-60</span></font></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-59</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@NamedQuery</font></span><span><font size="9pt"> 批注定义一个</font></span><font size="9pt"><span>JPA </span></font><span>查询语言查询,该查询使用名为</span><span><font color="#666666" size="9.0000pt">firstname</font></span><span><font size="9pt"> 的参数。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-60</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 获取此查询并使用 </font></span><span><font color="#666666" size="9.0000pt">Query</font></span><span><font size="9pt"> 方法</font></span><span><font color="#666666" size="9.0000pt">setParameter</font></span><span><font size="9pt"> 设置 </font></span><span><font color="#666666" size="9.0000pt">firstname</font></span><span><font size="9pt"> 参数。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-59 </span></font><span>使用 </span><span><font size="9pt">@NamedQuery </font></span><span>实现一个带参数的查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllEmployeesByFirstName",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = :firstname"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-60 </span></font><span>执行命名查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query queryEmployeesByFirstName = em.createNamedQuery("findAllEmployeesByFirstName");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> queryEmployeeByFirstName.setParameter("firstName", "John");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Collection employees = queryEmployessByFirstName.getResultList();</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@OneToMany</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>为具有一对多多重性的多值关联定义一个 </span><span><font color="#666666" size="9.0000pt">OneToMany</font></span><span><font size="9pt"> 映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@OneToMany</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">158 </font></span><span><font size="9pt">将获取类型配置为 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">159 </font></span><span><font size="9pt">由于所使用的 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 不是使用一般参数定义的,因此配置关联的目标实体</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">160 </font></span><span><font size="9pt">配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还删除关联的目标</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">161 </font></span><span><font size="9pt">配置持续性提供程序对单向一对多关系使用的连接表(请参阅 </font></span><font size="9pt"><u><span>@JoinTable</span></u><span>)的详细信息</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-29</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-29 @OneToMany </span></font><span>属性</span> </p> <table> <tr> <td style="width: 51.9500pt" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 322.7000pt" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 51.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">cascade</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 的空数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>不会将任何持续性操作层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望某些或所有持续性操作层叠到关联的目标,请将 </font></span><span><font color="#666666" size="9.0000pt">cascade</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 实例,其中包括:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">161 </font></span><span><font color="#666666" size="9.0000pt">ALL</font></span><span><font size="9pt"> - </font></span><span>针对拥有实体执行的任何持续性操作均层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">161 </font></span><span><font color="#666666" size="9.0000pt">MERGE</font></span><span><font size="9pt"> - </font></span><span>如果合并了拥有实体,则将 </span><span><font size="9pt">merge </font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">161 </font></span><span><font color="#666666" size="9.0000pt">PERSIST</font></span><span><font size="9pt"> - </font></span><span>如果持久保存拥有实体,则将 </span><span><font size="9pt">persist </font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">161 </font></span><span><font color="#666666" size="9.0000pt">REFRESH</font></span><span><font size="9pt"> - </font></span><span>如果刷新了拥有实体,则 </span><span><font size="9pt">refresh </font></span><span>为关联的层叠目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">161 </font></span><span><font color="#666666" size="9.0000pt">REMOVE</font></span><span><font size="9pt"> - </font></span><span>如果删除了拥有实体,则还删除关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 51.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fetch</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">FetchType.EAGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用获取类型 </span><span><font color="#666666" size="9.0000pt">EAGER</font></span><span><font size="9pt">:它要求持续性提供程序运行时必须急性获取数据。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这不适合于应用程序或特定的持久字段,请将 </font></span><span><font color="#666666" size="9.0000pt">fetch</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">FetchType.LAZY</font></span><span><font size="9pt">:它提示持续性提供程序在首次访问数据(如果可以)时应惰性获取数据。</font></span> </p> </td> </tr> <tr> <td style="width: 51.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">mappedBy</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:如果关系是单向的,则该持续性提供程序确定拥有该关系的字段。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果关系是双向的,则将关联相反(非拥有)方上的 </font></span><span><font color="#666666" size="9.0000pt">mappedBy</font></span><span><font size="9pt"> 元素设置为拥有此关系的字段或属性的名称(如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-62</span></font></u><span><font size="10.5000pt"> 所示)。</font></span> </p> </td> </tr> <tr> <td style="width: 51.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">targetEntity</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="430"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:使用一般参数定义的 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 的参数化类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,如果使用通过一般参数定义的 </font></span><font size="9pt"><span>Collection</span></font><span>,则持续性提供程序从被引用的对象类型推断出关联的目标实体。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 不使用一般参数,则必须指定作为关联目标的实体类:将关联拥有方上的 </font></span><span><font color="#666666" size="9.0000pt">targetEntity</font></span><span><font size="9pt"> 元素设置为作为关系目标的实体的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-61</span></font></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-62</span></font></u><span><font size="9pt"> 显示了如何使用此批注在使用一般参数的 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt">(被拥有方)和 </font></span><span><font color="#666666" size="9.0000pt">Order</font></span><span><font size="9pt">(拥有方)之间配置一个一对多映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-61 @OneToMany - </span></font><span>使用一般参数的 </span><span><font size="9pt">Customer </font></span><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @OneToMany(cascade=ALL, mappedBy="customer")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Set<Order> getOrders() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return orders;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-62 @ManyToOne - </span></font><span>使用一般参数的 </span><span><font size="9pt">Order </font></span><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToOne</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="CUST_ID", nullable=false)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Customer getCustomer() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return customer;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@OneToOne</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>为指向另一个具有一对一多重性的实体的单值关联定义一个 </span><span><font color="#666666" size="9.0000pt">OneToOne</font></span><span><font size="9pt"> 映射,并从被引用的对象类型推断出关联的目标实体。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@OneToOne</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">162 </font></span><span><font size="9pt">将获取类型配置为 </font></span><span><font color="#666666" size="9.0000pt">LAZY</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">163 </font></span><span><font size="9pt">如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">164 </font></span><span><font size="9pt">配置关联的目标实体(如果无法从被引用的对象类型推断出它)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">165 </font></span><span><font size="9pt">配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还删除关联的目标</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-30</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-30 @OneToOne </span></font><span>属性</span> </p> <table> <tr> <td style="width: 51.1000pt" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 323.6000pt" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 51.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">cascade</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>不会将任何持续性操作层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望某些或所有持续性操作层叠到关联的目标,请将 </font></span><span><font color="#666666" size="9.0000pt">cascade</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">CascadeType</font></span><span><font size="9pt"> 实例,其中包括:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">165 </font></span><span><font color="#666666" size="9.0000pt">ALL</font></span><span><font size="9pt"> - </font></span><span>针对拥有实体执行的任何持续性操作均层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">165 </font></span><span><font color="#666666" size="9.0000pt">MERGE</font></span><span><font size="9pt"> - </font></span><span>如果合并了拥有实体,则将 </span><span><font size="9pt">merge </font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">165 </font></span><span><font color="#666666" size="9.0000pt">PERSIST</font></span><span><font size="9pt"> - </font></span><span>如果持久保存拥有实体,则将 </span><span><font size="9pt">persist </font></span><span>层叠到关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">165 </font></span><span><font color="#666666" size="9.0000pt">REFRESH</font></span><span><font size="9pt"> - </font></span><span>如果刷新了拥有实体,则 </span><span><font size="9pt">refresh </font></span><span>为关联的层叠目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">165 </font></span><span><font color="#666666" size="9.0000pt">REMOVE</font></span><span><font size="9pt"> - </font></span><span>如果删除了拥有实体,则还删除关联的目标。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 51.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">fetch</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">FetchType.EAGER</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用获取类型 </span><span><font color="#666666" size="9.0000pt">EAGER</font></span><span><font size="9pt">:它要求持续性提供程序运行时必须急性获取数据。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这不适合于应用程序或特定的持久字段,请将 </font></span><span><font color="#666666" size="9.0000pt">fetch</font></span><span><font size="9pt"> 设置为</font></span><span><font color="#666666" size="9.0000pt">FetchType.LAZY</font></span><span><font size="9pt">:它提示持续性提供程序在首次访问数据(如果可以)时应惰性获取数据。</font></span> </p> </td> </tr> <tr> <td style="width: 51.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">mappedBy</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序从被引用的对象类型推断出关联的目标实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果持续性提供程序无法推断关联的目标实体,则将关联的相反(非拥有)方上的</font></span><span><font color="#666666" size="9.0000pt">mappedBy</font></span><span><font size="9pt"> 元素设置为拥有此关系的字段或属性的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称(如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-64</span></font></u><span><font size="10.5000pt">)所示。</font></span> </p> </td> </tr> <tr> <td style="width: 51.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">optional</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">true</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有(非基元)字段和属性的值可以为空。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这并不适合于您的应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">optional</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">false</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 51.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="68"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">targetEntity</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 323.6000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="431"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序从被引用的对象类型推断出关联的目标实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果持续性提供程序无法推断出目标实体的类型,则将关联的拥有方上的</font></span><span><font color="#666666" size="9.0000pt">targetEntity</font></span><span><font size="9pt"> 元素设置为作为关系目标的实体的 </font></span><span><font color="#666666" size="9.0000pt">Class</font></span><span><font size="9pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-63</span></font></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-64</span></font></u><span><font size="9pt"> 显示了如何使用此批注在 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt">(拥有方)和 </font></span><span><font color="#666666" size="9.0000pt">CustomerRecord</font></span><span><font size="9pt">(被拥有方)之间配置一个一对一映射。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-63 @OneToOne - Customer </span></font><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @OneToOne(optional=false)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public CustomerRecord getCustomerRecord() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return customerRecord;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-64 @OneToOne - CustomerRecord </span></font><span>类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class CustomerRecord implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @OneToOne(optional=false, mappedBy="customerRecord")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Customer getCustomer() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return customer;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@OrderBy</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序按关联实体的主键以升序顺序检索 </span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 关联的成员。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">@OrderBy</font></span><span><font size="9pt"> 批注与 </font></span><u><span><font color="#0000ff" size="9pt">@OneToMany</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@ManyToMany</font></span></u><span><font size="9pt"> 一起使用以便:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">166 </font></span><span><font size="9pt">指定一个或多个作为排序依据的其他字段或属性</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">167 </font></span><span><font size="9pt">为每个这样的字段或属性名指定不同的排序(升序或降序)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-31</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-31 @OrderBy </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序按关联实体的主键以升序顺序检索 </span><span><font color="#666666" size="9.0000pt">Collection</font></span><span><font size="9pt"> 关联的成员。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要按某些其他字段或属性排序并指定了不同的排序,则将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为以下元素的逗号分隔列表:</font></span><font size="9pt"><span>" </span></font><span><font color="#666666" size="9.0000pt">property-or-field-name</font></span><span><font size="9pt"> </font></span><span><font color="#666666" size="9.0000pt">ASC</font></span><span><font size="9pt">| </font></span><span><font color="#666666" size="9.0000pt">DESC</font></span><span><font size="9pt">”</font></span><span>(请参阅 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-65</span></font></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-65</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@OrderBy</font></span><span><font size="9pt"> 批注指定 </font></span><font size="9pt"><span>Project </span></font><span>方法 </span><span><font color="#666666" size="9.0000pt">getEmployees</font></span><span><font size="9pt"> 应按 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 字段</font></span><span><font color="#666666" size="9.0000pt">lastname</font></span><span><font size="9pt"> 以升序顺序并按 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 字段 </font></span><span><font color="#666666" size="9.0000pt">seniority</font></span><span><font size="9pt"> 以降序顺序返回 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">。 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-66</span></font></u><span><font size="9pt"> 显示了默认情况下, </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 方法 </font></span><span><font color="#666666" size="9.0000pt">getProjects</font></span><span><font size="9pt"> 按 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 主键 </font></span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt"> 以升序顺序返回</font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-65 Project </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity public class Project {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToMany</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @OrderBy("lastname ASC", "seniority DESC")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public List<Employee> getEmployees() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    };</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-66 Employee </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private int empId;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private String lastname;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private int seniority;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ManyToMany(mappedBy="employees")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // By default, returns a List in ascending order by empId</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public List<Project> getProjects() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    };</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PersistenceContext</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在使用 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序的应用程序中,可以使用实体管理器执行所有持续性操作(创建、读取、更新和删除)。</span><span><font size="9pt">Java EE </font></span><span>应用程序使用相关性注入或在 </span><span><font size="9pt">JNDI </font></span><span>名称空间中直接查找实体管理器获取实体管理器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceContext</font></span><span><font size="9pt"> 批注获取实体管理器:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">168 </font></span><span><font size="9pt">使用相关性注入</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">169 </font></span><span><font size="9pt">使用 </font></span><font size="9pt"><span>JNDI </span></font><span>查找按名称进行</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">170 </font></span><span><font size="9pt">与特定的持续性单元关联(另请参阅 </font></span><font size="9pt"><u><span>@PersistenceUnit</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">171 </font></span><span><font size="9pt">具有扩展的持续性上下文</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">172 </font></span><span><font size="9pt">使用特定的持续性属性进行了自定义(请参阅 </font></span><font size="9pt"><u><span>@PersistenceProperty</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要指定的 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceContext</font></span><span><font size="9pt">,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContexts</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-32</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-32 @PersistenceContext </span></font><span>属性</span> </p> <table> <tr> <td style="width: 52.4500pt" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 322.2500pt" width="429"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 52.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="429"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序检索默认实体管理器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要注入或查找特定实体管理器,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为要使用的实体管理器的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">名称。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于相关性注入,不需要 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于 </font></span><font size="9pt"><span>JNDI </span></font><span>查找,必须将 </span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为要在环境引用上下文中访问实体管理器所使用的名称。</font></span> </p> </td> </tr> <tr> <td style="width: 52.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">properties</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="429"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体管理器将使用默认属性。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要配置包含供应商特定属性的 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序属性(例如,请参阅 </span><u><span><font color="#0000ff" size="9pt">“</font></span><font color="#0000ff" size="9pt"><span>TopLink JPA Persistence.xml</span><span>文件扩展</span><span>”</span></font></u><span><font size="10.5000pt">),请将 </font></span><span><font color="#666666" size="9.0000pt">properties</font></span><span><font size="9pt"> 设置为 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceProperty</font></span></u><span><font size="10.5000pt">实例数组。</font></span> </p> </td> </tr> <tr> <td style="width: 52.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">type</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="429"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><span><font color="#666666" size="9.0000pt">PersistenceContextType.TRANSACTION</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体管理器是容器管理的,并且它们的持续性上下文的生命周期伸缩到一个事务:即,持续性上下文在事务启动时开始存在,并在事务提交时停止存在。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在以下条件下,将 </font></span><span><font color="#666666" size="9.0000pt">type</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">PersistenceContextType.EXTENDED</font></span><span><font size="9pt">:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">172 </font></span><span><font size="9pt">您的持续性上下文是应用程序管理的</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">172 </font></span><span><font size="9pt">您希望扩展的持续性上下文在 </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 实例从创建一直到关闭期间存在</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">172 </font></span><span><font size="9pt">您希望实体管理器在事务提交后维护对实体对象的引用</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">172 </font></span><span><font size="9pt">您希望调用 </font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 方法 </font></span><span><font color="#666666" size="9.0000pt">persist</font></span><span><font size="9pt">、 </font></span><span><font color="#666666" size="9.0000pt">remove</font></span><span><font size="9pt">、 </font></span><span><font color="#666666" size="9.0000pt">merge</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">refresh</font></span><span><font size="9pt">,而不论事务是否处于活动状态</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 52.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="69"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">unitName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 322.2500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="429"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序检索默认持续性单元的默认实体管理器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要注入或查找与特定持续性单元关联的实体管理器,则将 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 设置为所需的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 持续性单元名称。或者,如果要指定 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt"> 和持续性单元,则可以使用 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceUnit</font></span></u><span><font size="10.5000pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于相关性注入,不需要 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于 </font></span><font size="9pt"><span>JNDI </span></font><span>查找,如果指定 </span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt">,则由 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 访问的实体管理器必须与此持续性单元关联。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-67</span></font></u><span><font size="9pt"> 显示了如何使用此批注在无状态会话中注入实体管理器, </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-68</span></font></u><span><font size="9pt"> 显示了如何使用此批注在 </font></span><font size="9pt"><span>JNDI </span></font><span>中查找实体管理器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-67 </span></font><span>使用 </span><span><font size="9pt">@PersistenceContext </font></span><span>和相关性注入</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-68 </span></font><span>使用 </span><span><font size="9pt">@PersistenceContext </font></span><span>和 </span><span><font size="9pt">JNDI </font></span><span>查找</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="OrderEM")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> em = (EntityManager)ctx.lookup("OrderEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PersistenceContexts</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="9pt">,则必须使用一个 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceContexts</font></span><span><font size="9pt"> 批注指定所有持续性上下文。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-33</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-33 @PersistenceContexts </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多持续性上下文,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">PersistenceContext</font></span><span><font size="9pt"> 实例数组(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-69</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个持续性上下文。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-69 @PersistenceContexts</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContexts({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="OrderEM")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="ItemEM"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em = (EntityManager)ctx.lookup("OrderEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterItem(int orderID, Item newItem) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em = (EntityManager)ctx.lookup("ItemEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PersistenceProperty</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设您使用 </span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="9pt"> 获取的实体管理器将使用默认属性。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceProperty</font></span><span><font size="9pt"> 批注指定属性(包括供应商特定的属性),以便容器或持续性提供程序:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">173 </font></span><span><font size="9pt">自定义实体管理器行为</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">174 </font></span><span><font size="9pt">利用供应商的 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序实现中的特定特性</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">创建实体管理器时将属性传递给持续性提供程序。无法识别的属性被简单地忽略。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-34</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-34 @PersistenceProperty </span></font><span>属性</span> </p> <table> <tr> <td style="width: 48.0500pt" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 48.0500pt" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 287.1000pt" width="382"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 287.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="382"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定持续性属性的名称,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 属性名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关持续性属性的详细信息,请参阅 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序文档。</span> </p> </td> </tr> <tr> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 287.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="382"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定持续性属性的值,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 属性值。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关持续性属性值的详细信息,请参阅 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序文档。</span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-70</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceProperty</font></span><span><font size="9pt"> 批注自定义查询以利用由 </font></span><font size="9pt"><span>TopLink Essentials </span></font><span>提供的供应商 </span><span><font size="9pt">JPA </font></span><span>扩展:在该示例中,该属性确保在此持续性上下文中使用一个完整的 </span><span><font size="9pt">TopLink </font></span><span>缓存。有关详细信息,请参阅 </span><u><span><font color="#0000ff" size="9pt">“</font></span><font color="#0000ff" size="9pt"><span>TopLink JPA Persistence.xml</span></font></u><span>文件扩展</span><u><span><font color="#0000ff" size="9pt">”</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-70 @PersistenceProperty</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> properties={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceProperty={name="toplink.cache.type.default", value="CacheType.Full"}</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PersistenceUnit</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用与默认持续性单元或您使用 </span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="9pt"> 属性</font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 指定的持续性单元关联的默认 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceUnit</font></span><span><font size="9pt"> 批注指定 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt">,您希望 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用它来:</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">175 </font></span><span><font size="9pt">获取指定的实体管理器</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">176 </font></span><span><font size="9pt">指定 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt"> 和持续性单元</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个要指定的 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceUnit</font></span><span><font size="9pt">,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceUnits</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-34</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-35 @PersistenceUnit </span></font><span>属性</span> </p> <table> <tr> <td style="width: 42.1500pt" width="56"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 332.5000pt" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 42.1500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="56"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 332.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序从默认 </span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt"> 中获取它的</font></span><span><font color="#666666" size="9.0000pt">EntityManager</font></span><span><font size="9pt"> 实例。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序在注入或查找实体管理器时使用特定的</span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt">,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的实体管理器工厂的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于相关性注入,不需要 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于 </font></span><font size="9pt"><span>JNDI </span></font><span>查找,必须将 </span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为要在环境引用上下文中访问实体管理器所使用的名称。</font></span> </p> </td> </tr> <tr> <td style="width: 42.1500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="56"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">unitName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 332.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="443"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序检索默认持续性单元的默认实体管理器。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要注入或查找与特定持续性单元关联的实体管理器,则将 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 设置为所需的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 持续性单元名称。另请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="10.5000pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于相关性注入,不需要 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">对于 </font></span><font size="9pt"><span>JNDI </span></font><span>查找,如果指定 </span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt">,则由 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 访问的 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt"> 必须与此持续性单元关联。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-71</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceUnit</font></span><span><font size="9pt"> 批注指定要使用的 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt"> 的 </font></span><font size="9pt"><span>JNDI </span></font><span>名称以及与该工厂关联的持续性单元名称。当 </span><span><font size="9pt">JPA </font></span><span>持续性提供程序使用 </span><span><font size="9pt">JNDI </font></span><span>获取一个使用持续性上下文 </span><span><font color="#666666" size="9.0000pt">OrderEM</font></span><span><font size="9pt"> 的实体管理器时,它将使用 </font></span><font size="9pt"><span>JNDI </span></font><span>名称 </span><span><font color="#666666" size="9.0000pt">OrderEMFactory</font></span><span><font size="9pt"> 与持续性单元 </font></span><span><font color="#666666" size="9.0000pt">OrderEMUnit</font></span><span><font size="9pt"> 关联的 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-71 </span></font><span>使用 </span><span><font size="9pt">@PersistenceUnit </font></span><span>指定工厂和单元</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="OrderEM")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceUnit(name="OrderEMFactory", unitName="OrderEMUnit")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> em = (EntityManager)ctx.lookup("OrderEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-72</span></font></u><span><font size="9pt"> 显示了一个使用 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 仅指定持续性单元的其他方法。在该示例中,当 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用 </span><span><font size="9pt">JNDI </font></span><span>获取一个使用持续性上下文 </span><span><font color="#666666" size="9.0000pt">OrderEM</font></span><span><font size="9pt"> 的实体管理器时,它将使用与持续性单元 </font></span><span><font color="#666666" size="9.0000pt">OrderEMUnit</font></span><span><font size="9pt"> 关联的默认 </font></span><span><font color="#666666" size="9.0000pt">EntityManagerFactory</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-72 </span></font><span>使用 </span><span><font size="9pt">@PersistenceContext </font></span><span>属性 </span><span><font size="9pt">unitName</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="OrderEM", unitName="OrderEMUnit")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> em = (EntityManager)ctx.lookup("OrderEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PersistenceUnits</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceUnit</font></span></u><span><font size="9pt">,则必须使用一个 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceUnits</font></span><span><font size="9pt"> 批注指定所有持续性上下文。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-36</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-36 @PersistenceUnits </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多持续性单元,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">PersistenceUnit</font></span><span><font size="9pt"> 实例数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@PersistenceUnit</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-73</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个持续性单元。在该示例中, </font></span><u><span><font color="#0000ff" size="9pt">@PersistenceContext</font></span></u><span><font size="9pt"> 属性</font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">@PersistenceUnit</font></span><span><font size="9pt"> 属性 </font></span><span><font color="#666666" size="9.0000pt">unitName</font></span><span><font size="9pt"> 必须对应以便关联持续性上下文和持续性单元。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-73 @PersistenceUnits</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Stateless</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class OrderEntryBean implements OrderEntry {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContexts({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="OrderEM", unitName="OrderEMUnit")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceContext(name="ItemEM", unitName="ItemEMUnit"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceUnits({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceUnit(name="OrderEMFactory", unitName="OrderEMUnit"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PersistenceUnit(name="ItemEMFactory", unitName="ItemEMUnit")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterOrder(int custID, Order newOrder) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em = (EntityManager)ctx.lookup("OrderEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Customer cust = em.find(Customer.class, custID);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> cust.getOrders().add(newOrder);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> newOrder.setCustomer(cust);</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public void enterItem(int orderID, Item newItem) {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> EntityManager em = (EntityManager)ctx.lookup("ItemEM");</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PrimaryKeyJoinColumn</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,当一个实体使用 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.JOINED</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Inheritance</font></span></u><span><font size="9pt">)扩展另一个实体时,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设子类的外键列与超类主表的主键列同名。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@PrimaryKeyJoinColumn</font></span><span><font size="9pt"> 批注:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">177 </font></span><span><font size="9pt">如果子类的外键列与该情形中超类的主表的主键列不同名</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">178 </font></span><span><font size="9pt">使用 </font></span><font size="9pt"><u><span>@SecondaryTable</span></u><span> 批注将辅助表连接到主表</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">179 </font></span><span><font size="9pt">在 </font></span><font size="9pt"><u><span>@OneToOne</span></u><span> 映射中,引用实体的主键用作被引用实体的外键。</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">180 </font></span><span><font size="9pt">使用复合外键(请参阅 </font></span><font size="9pt"><u><span>@PrimaryKeyJoinColumns</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-37</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-37 @PrimaryKeyJoinColumn </span></font><span>属性</span> </p> <table> <tr> <td style="width: 67.0000pt" width="89"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 307.6500pt" width="410"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 67.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="89"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columnDefinition</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 307.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="410"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>使用最少量 </span><span><font size="9pt">SQL </font></span><span>创建一个数据库表列。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要使用更多指定选项创建的列,请将 </font></span><span><font color="#666666" size="9.0000pt">columnDefinition</font></span><span><font size="9pt"> 设置为在生成列的 </font></span><font size="9pt"><span>DDL </span></font><span>时希望 </span><span><font size="9pt">JPA </font></span><span>使用的 </span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> SQL </font></span><span>片断。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">不要将此属性与 </font></span><u><span><font color="#0000ff" size="9pt">@OneToOne</font></span></u><span><font size="10.5000pt"> 映射一起使用。</font></span> </p> </td> </tr> <tr> <td style="width: 67.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="89"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 307.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="410"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序对当前表的主键列采用以下名称之一(取决于您使用该批注的方式):</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">180 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.JOINED</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="10pt">@Inheritance</font></span></u><span><font size="10.5000pt">):与超类的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#666666" size="10pt">180 </font></span><span><font color="#0000ff" size="10pt">@SecondaryTable</font></span></u><span><font size="10.5000pt"> 映射:与主表的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#666666" size="10pt">180 </font></span><span><font color="#0000ff" size="10pt">@OneToOne</font></span></u><span><font size="10.5000pt"> 映射:与引用实体的表的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该名称难于处理、是一个保留字、与事先存在的数据模型不兼容或作为数据库中的列名无效,则将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> <tr> <td style="width: 67.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="89"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">referencedColumnName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 307.6500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="410"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序对连接到的表的主键列采用以下名称之一(取决于您使用该批注的方式):</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">180 </font></span><span><font color="#666666" size="9.0000pt">InheritanceType.JOINED</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="10pt">@Inheritance</font></span></u><span><font size="10.5000pt">):与超类的主表的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#666666" size="10pt">180 </font></span><span><font color="#0000ff" size="10pt">@SecondaryTable</font></span></u><span><font size="10.5000pt"> 映射:与主表的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#666666" size="10pt">180 </font></span><span><font color="#0000ff" size="10pt">@OneToOne</font></span></u><span><font size="10.5000pt"> 映射:与被引用实体的表的主键列同名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的列名无效,请将 </font></span><span><font color="#666666" size="9.0000pt">referencedColumnName</font></span><span><font size="9pt"> 设置为所需的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-74</span></font></u><span><font size="9pt"> 显示了一个实体基类 </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt">, </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-75</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@PrimaryKeyJoinColumn</font></span><span><font size="9pt"> 在</font></span><span><font color="#666666" size="9.0000pt">ValuedCustomer</font></span><span><font size="9pt">( </font></span><span><font color="#666666" size="9.0000pt">Customer</font></span><span><font size="9pt"> 的一个子类)的主表中指定主键连接列 </font></span><span><font color="#666666" size="9.0000pt">CUST_ID</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-74 @PrimaryKeyJoinColumn - InheritanceType.JOINED </span></font><span>超类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Inheritance(strategy=JOINED)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue("CUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-75 @PrimaryKeyJoinColumn - InheritanceType.JOINED </span></font><span>子类</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="VCUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue("VCUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PrimaryKeyJoinColumn(name="CUST_ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@PrimaryKeyJoinColumns</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设每个实体有一个单列主键。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要指定一个由两个或更多列组成的主键,请使用 </font></span><span><font color="#666666" size="9.0000pt">@PrimaryKeyJoinColumns</font></span><span><font size="9pt"> 批注。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-38</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-38 @PrimaryKeyJoinColumns </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定一个复合(多列)主键,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">PrimaryKeyJoinColumn</font></span><span><font size="9pt"> 实例的数组(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@PrimaryKeyJoinColumn</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-76</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定一个由列 </font></span><span><font color="#666666" size="9.0000pt">CUST_ID</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">CUST_TYPE</font></span><span><font size="9pt"> 组成的复合主键。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-76 @PrimaryKeyJoinColumns</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="VCUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @DiscriminatorValue("VCUST")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PrimaryKeyJoinColumns({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PrimaryKeyJoinColumn(name="CUST_ID",referencedColumnName="ID"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @PrimaryKeyJoinColumn(name="CUST_TYPE",referencedColumnName="TYPE")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class ValuedCustomer extends Customer {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@QueryHint</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><u><span><font color="#0000ff" size="9pt">@NamedQuery</font></span></u><span><font size="9pt"> 或 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt"> 应完全按照查询</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 指定的方式执行。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@QueryHint</font></span><span><font size="9pt"> 批注指定供应商特定的 </font></span><font size="9pt"><span>JPA </span></font><span>查询扩展,以:</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">181 </font></span><span><font size="9pt">提高查询性能</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">182 </font></span><span><font size="9pt">利用供应商的 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序实现中的特定特性</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-6</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-39 @QueryHint </span></font><span>属性</span> </p> <table> <tr> <td style="width: 48.0500pt" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 48.0500pt" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 260.1000pt" width="346"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 260.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="346"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定提示名称,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 提示名称。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关提示的详细信息,请参阅 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序文档。</span> </p> </td> </tr> <tr> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 48.0500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="64"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 260.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="346"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定提示的值,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 提示值。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">有关提示值的详细信息,请参阅 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序文档。</span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-77</span></font></u><span><font size="9pt"> 显示了如何使用 </font></span><span><font color="#666666" size="9.0000pt">@QueryHint</font></span><span><font size="9pt"> 批注自定义查询以利用由 </font></span><font size="9pt"><span>TopLink Essentials </span></font><span>提供的供应商 </span><span><font size="9pt">JPA </font></span><span>扩展:在该示例中,提示确保在执行查询时始终刷新 </span><span><font size="9pt">TopLink </font></span><span>缓存。有关详细信息,请参阅</span><u><span><font color="#0000ff" size="9pt">“</font></span><font color="#0000ff" size="9pt"><span>TopLink JPA </span></font></u><span>查询提示扩展</span><u><span><font color="#0000ff" size="9pt">”</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-77 @QueryHint</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @NamedQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="findAllEmployees",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> query="SELECT * FROM EMPLOYEE WHERE MGR=1"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> hints={@QueryHint={name="toplink.refresh", value="true"}}</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@SecondaryTable</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有持久字段均存储到一个名称为实体名称的数据库表中:该表称作主表(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Table</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望 </font></span><font size="9pt"><span>JPA </span></font><span>分别将实体的某些持久字段持久保存到主表和其他数据库表,请使用 </span><span><font color="#666666" size="9.0000pt">@SecondaryTable</font></span><span><font size="9pt">批注将实体与其他数据库表关联。在该示例中,您使用 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt"> 批注将实体的持久字段与表关联。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要将两个或更多辅助表与实体关联,则可以使用 </font></span><u><span><font color="#0000ff" size="9pt">@SecondaryTables</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-40</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-40 @SecondaryTable </span></font><span>属性</span> </p> <table> <tr> <td style="width: 59.7000pt" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 315.0000pt" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 59.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">姓名</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果实体使用辅助表,请将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 表名。</font></span> </p> </td> </tr> <tr> <td style="width: 59.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">catalog</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认目录。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认目录不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">catalog</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 目录名。</font></span> </p> </td> </tr> <tr> <td style="width: 59.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">pkJoinColumns</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的数据库表中的任何列均不用于主键连接。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果对该表中的主键连接使用一个或多个列,请将 </font></span><span><font color="#666666" size="9.0000pt">pkJoinColumns</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">@PrimaryKeyJoinColumn</font></span><span><font size="9pt"> 实例的数组。有关详细信息,请参阅</font></span><u><span><font color="#0000ff" size="9pt">@PrimaryKeyJoinColumn</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 59.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">schema</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认模式。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认模式不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">schema</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 模式名。</font></span> </p> </td> </tr> <tr> <td style="width: 59.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="79"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">uniqueConstraints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 315.0000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="420"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的数据库表中的任何列均没有唯一约束。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果唯一约束应用于该表中的一列或多列,请将 </font></span><span><font color="#666666" size="9.0000pt">uniqueContraints</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">UniqueConstraint</font></span><span><font size="9pt"> 实例的数组。有关详细信息,请参阅</font></span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-78</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定一个名为 </font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt"> 的辅助表。在该示例中,默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>将实体持久字段 </span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt"> 持久保存到名为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 的主表中的列 </font></span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt">,并将 </font></span><span><font color="#666666" size="9.0000pt">empSalary</font></span><span><font size="9pt"> 持久保存到辅助表 </font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt"> 中的列 </font></span><span><font color="#666666" size="9.0000pt">empSalary</font></span><span><font size="9pt">。有关详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-78 @SecondaryTable</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SecondaryTable(name="EMP_HR")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Long empId;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Column(table="EMP_HR", name="EMP_SALARY"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Float empSalary;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@SecondaryTables</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@SecondaryTable</font></span></u><span><font size="9pt">,可以使用一个 </font></span><span><font color="#666666" size="9.0000pt">@SecondaryTables</font></span><span><font size="9pt"> 批注指定所有辅助表。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-41</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-41 @SecondaryTables </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多辅助表,请将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">SecondaryTable</font></span><span><font size="9pt"> 实例的数组(请参阅</font></span><u><span><font color="#0000ff" size="9pt">@SecondaryTable</font></span></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-79</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个名为 </font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">EMP_TR</font></span><span><font size="9pt"> 的辅助表。在该示例中,默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>将实体持久字段 </span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt"> 持久保存到名为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 的主表中的列 </font></span><span><font color="#666666" size="9.0000pt">empId</font></span><span><font size="9pt">。</font></span><font size="9pt"><span>JPA </span></font><span>将 </span><span><font color="#666666" size="9.0000pt">empSalary</font></span><span><font size="9pt">持久保存到辅助表 </font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt"> 中的列 </font></span><span><font color="#666666" size="9.0000pt">empSalary</font></span><span><font size="9pt">,并将 </font></span><span><font color="#666666" size="9.0000pt">empClass</font></span><span><font size="9pt"> 持久保存到辅助表 </font></span><span><font color="#666666" size="9.0000pt">EMP_TR</font></span><span><font size="9pt"> 中的列</font></span><span><font color="#666666" size="9.0000pt">EMP_HR</font></span><span><font size="9pt">。有关详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-79 @SecondaryTables</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SecondaryTables({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SecondaryTable(name="EMP_HR"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SecondaryTable(name="EMP_TR")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Long empId;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Column(table="EMP_HR", name="EMP_SALARY"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Float empSalary;</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> @Column(table="EMP_TR", name="EMP_CLASS"))</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> private Float empClass;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@SequenceGenerator</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用 </font></span><u><span><font color="#0000ff" size="9pt">@GeneratedValue</font></span></u><span><font size="9pt"> 批注指定一个 </font></span><span><font color="#666666" size="9.0000pt">SEQUENCE</font></span><span><font size="9pt"> 类型的主键生成器,则可以使用</font></span><span><font color="#666666" size="9.0000pt">@SequenceGenerator</font></span><span><font size="9pt"> 批注微调该主键生成器以:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">183 </font></span><span><font size="9pt">更改分配大小以匹配应用程序要求或数据库性能参数</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">184 </font></span><span><font size="9pt">更改初始值以匹配现有的数据模型(例如,如果基于已经为其分配或保留了一组主键值的现有数据集构建)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">185 </font></span><span><font size="9pt">使用现有数据模型中预定义的序列</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-42</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-42 @SequenceGenerator </span></font><span>属性</span> </p> <table> <tr> <td style="width: 60.8500pt" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 313.8500pt" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 60.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">SequenceGenerator</font></span><span><font size="9pt"> 的名称必须匹配其 </font></span><span><font color="#666666" size="9.0000pt">startegy</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">SEQUENCE</font></span><span><font size="9pt"> 的</font></span><span><font color="#666666" size="9.0000pt">GeneratedValue</font></span><span><font size="9pt"> 的名称。</font></span> </p> </td> </tr> <tr> <td style="width: 60.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">allocationSize</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>50.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用的分配大小为 </span><span><font size="9pt">50</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果此分配大小与应用程序要求或数据库性能参数不匹配,请将</font></span><span><font color="#666666" size="9.0000pt">allocationSize</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> <tr> <td style="width: 60.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">initialValue</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>0.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设持续性提供程序将所有主键值的起始值设置为 </span><span><font size="9pt">0</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这与现有数据模型不匹配,请将 </font></span><span><font color="#666666" size="9.0000pt">initialValue</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> <tr> <td style="width: 60.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">sequenceName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.8500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序分配它自己创建的序列名。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果要使用事先存在或预定义的序列,请将 </font></span><span><font color="#666666" size="9.0000pt">sequenceName</font></span><span><font size="9pt"> 设置为所需的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-80</span></font></u><span><font size="9pt"> 显示了如何使用此批注为名为 </font></span><span><font color="#666666" size="9.0000pt">CUST_SEQ</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">SEQUENCE</font></span><span><font size="9pt"> 主键生成器指定分配大小。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-80 @SequenceGenerator</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SequenceGenerator(name="CUST_SEQ", allocationSize=25)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="CUST_ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Long getId() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@SqlResultSetMapping</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">执行 </font></span><u><span><font color="#0000ff" size="9pt">@NamedNativeQuery</font></span></u><span><font size="9pt"> 时,它可以返回实体(包括不同类型的实体)、标量值或实体和标量值的组合。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下(如 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-81</span></font></u><span><font size="9pt"> 所示),</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设原生 </span><span><font size="9pt">SQL </font></span><span>查询中的 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">186 </font></span><span><font size="9pt">返回一个实体类型</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">187 </font></span><span><font size="9pt">包含与返回的实体的所有字段或属性相对应的所有列</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">188 </font></span><span><font size="9pt">使用与字段或属性名(未使用 </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句)相对应的列名</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-81 </span></font><span>简单的原生 </span><span><font size="9pt">SQL </font></span><span>查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query q = entityManager.createNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "SELECT o.id, o.quantity, o.item " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "FROM Order o, Item i " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "WHERE (o.item = i.id) AND (i.name = "widget")",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> Order.class</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> );</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> List resultList = q.getResultList();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // List of Order entity objects:{Order, Order, ...}</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询满足以下条件,请使用 </span><span><font color="#666666" size="9.0000pt">@SqlResultSetMapping</font></span><span><font size="9pt"> 批注控制 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序如何将 </span><span><font size="9pt">JDBC </font></span><span>结果集映射到实体字段或属性以及标量:</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">189 </font></span><span><font size="9pt">返回多个类型的实体</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">190 </font></span><span><font size="9pt">只返回标量值或实体和标量值的组合</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">191 </font></span><span><font size="9pt">使用列别名( </font></span><span><font color="#666666" size="9.0000pt">AS</font></span><span><font size="9pt"> 语句)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果有多个 </font></span><span><font color="#666666" size="9.0000pt">@SqlResultSetMapping</font></span><span><font size="9pt">,则必须使用 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMappings</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-8</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-43 @SqlResultSetMapping </span></font><span>属性</span> </p> <table> <tr> <td style="width: 42.9000pt" width="57"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 331.7500pt" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 42.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="57"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为此 </font></span><span><font color="#666666" size="9.0000pt">@SqlResultSetMapping</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 名称。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">这是用于将 </font></span><span><font color="#666666" size="9.0000pt">@SqlResultSetMapping</font></span><span><font size="9pt"> 与原生 </font></span><font size="9pt"><span>SQL </span></font><span>查询关联的名称(请参阅 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-84</span></font></u><span><font size="10.5000pt">)。</font></span> </p> </td> </tr> <tr> <td style="width: 42.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="57"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columns</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">ColumnResult</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句只返回实体。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><span><font color="#666666" size="9.0000pt">SELECT</font></span><span><font size="9pt"> 语句返回标量值,则将 </font></span><span><font color="#666666" size="9.0000pt">columns</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">ColumnResult</font></span><span><font size="9pt"> 实例的数组,每个标量结果一个 </font></span><u><span><font color="#0000ff" size="9pt">@ColumnResult</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 42.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="57"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">entities</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.7500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="442"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:空 </font></span><span><font color="#666666" size="9.0000pt">EntityResult</font></span><span><font size="9pt"> 数组。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设 </span><span><font size="9pt">SELECT </font></span><span>语句返回一个类型的实体。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果 </font></span><font size="9pt"><span>SELECT </span></font><span>语句返回多个类型的实体,请将实体设置为 </span><span><font color="#666666" size="9.0000pt">EntityResult</font></span><span><font size="9pt"> 实例的数组,每个返回的实体类型一个 </font></span><u><span><font color="#0000ff" size="9pt">@EntityResult</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-82</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Order</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">Item</font></span><span><font size="9pt">(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-83</span></font></u><span><font size="9pt">)实体和标量 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 包含在结果列表(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-84</span></font></u><span><font size="9pt">)中。在该示例中,结果列表将为 </font></span><span><font color="#666666" size="9.0000pt">Object</font></span><span><font size="9pt"> 数组的 </font></span><span><font color="#666666" size="9.0000pt">List</font></span><span><font size="9pt">,如: </font></span><span><font color="#666666" size="9.0000pt">{[Order, Item, "Shoes"], [Order, Item, "Socks"], ...}</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-82 </span></font><span>使用 </span><span><font size="9pt">@SqlResultSetMapping </font></span><span>的 </span><span><font size="9pt">Order </font></span><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Order.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="order_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="quantity", column="order_quantity"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="item",    column="order_item")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entityClass=Item.class,</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> fields={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="id",      column="item_id"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @FieldResult(name="name",    column="item_name"),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">            }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> columns={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ColumnResult(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="item_name"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected long quantity;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Item item;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-83 Item </span></font><span>实体</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Item {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected String name;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-84 </span></font><span>将 </span><span><font size="9pt">@SqlResultSetMapping </font></span><span>与 </span><span><font size="9pt">@EntityResult </font></span><span>一起使用的原生查询</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">Query q = entityManager.createNativeQuery(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "SELECT o.id      AS order_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.quantity AS order_quantity, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "o.item    AS order_item, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.id      AS item_id, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "i.name    AS item_name, " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "FROM Order o, Item i " +</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "WHERE (order_quantity > 25) AND (order_item = i.id)",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> "OrderResults"</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> );</font></span><span><font size="10.5000pt"><br></font></span><font size="10.5000pt"><span><br></span></font><span><font size="9pt"> List resultList = q.getResultList();</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> // List of Object arrays:{[Order, Item, "Shoes"], [Order, Item, "Socks"], ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@SqlResultSetMappings</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要指定多个 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="9pt">,则必须使用一个 </font></span><span><font color="#666666" size="9.0000pt">@SqlResultSetMappings</font></span><span><font size="9pt"> 批注指定所有 </font></span><font size="9pt"><span>SQL </span></font><span>结果集映射。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-5</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-44 @SqlResultSetMappings </span></font><span>属性</span> </p> <table> <tr> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 334.1000pt" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 334.1000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="445"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">要指定两个或更多 </font></span><font size="9pt"><span>SQL </span></font><span>结果集映射,请将 </span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="10.5000pt"> 实例的数组。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-85</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定两个 </font></span><u><span><font color="#0000ff" size="9pt">@SqlResultSetMapping</font></span></u><span><font size="9pt"> 实例。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-85 @SqlResultSetMappings</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">SqlResultSetMappings({</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderItemItemNameResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(entityClass=Order.class),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(entityClass=Item.class)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> columns={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @ColumnResult(name="item_name")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @SqlResultSetMapping(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="OrderItemResults",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> entities={</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(entityClass=Order.class),</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @EntityResult(entityClass=Item.class)</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">        }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> })</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Order {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected long quantity;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected Item item;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Table</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有持久字段均存储到一个名称为实体名称的数据库表中(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">在以下条件下,使用 </font></span><span><font color="#666666" size="9.0000pt">@Table</font></span><span><font size="9pt"> 批注指定与实体关联的主表:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">192 </font></span><span><font size="9pt">实体名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的表名无效</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">193 </font></span><span><font size="9pt">需要控制表所属的目录或模式</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果希望 </font></span><font size="9pt"><span>JPA </span></font><span>将某些字段持久保存到主表,而将其他字段持久保存到一个或多个辅助表,请参阅</span><u><span><font color="#0000ff" size="9pt">@SecondaryTable</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-45</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-45 @Table </span></font><span>属性</span> </p> <table> <tr> <td style="width: 58.4500pt" width="77"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 316.2000pt" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 58.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="77"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">catalog</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 316.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认目录。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认目录不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">catalog</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 目录名。</font></span> </p> </td> </tr> <tr> <td style="width: 58.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="77"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 316.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的数据库表与实体类同名。在 </span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-86</span></font></u><span><font size="10.5000pt"> 中,默认 </font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 为 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果实体类名难以处理、是一个保留字或与预先存在的数据模型不兼容,请将</font></span><span><font color="#666666" size="9.0000pt">name</font></span><span><font size="9pt"> 设置为相应的数据表名称。在 </font></span><u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-86</span></font></u><span><font size="10.5000pt"> 中,</font></span><font size="10.5000pt"><span>JPA </span><span>将实体类 </span></font><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt">持久保存到名为 </font></span><span><font color="#666666" size="9.0000pt">EMP</font></span><span><font size="9pt"> 的数据库表中。</font></span> </p> </td> </tr> <tr> <td style="width: 58.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="77"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">schema</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 316.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认模式。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认模式不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">schema</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 模式名。</font></span> </p> </td> </tr> <tr> <td style="width: 58.4500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="77"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">uniqueConstraints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 316.2000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="421"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的数据库表中的任何列均没有唯一约束。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果唯一约束应用于该表中的一列或多列,请将 </font></span><font size="9pt"><span>uniqueContraints </span></font><span>设置为一个或多个 </span><span><font color="#666666" size="9.0000pt">UniqueConstraint</font></span><span><font size="9pt"> 实例的数组。有关详细信息,请参阅</font></span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-86</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定主表名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-86 @Table</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(name="EMP")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@TableGenerator</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果使用 </font></span><u><span><font color="#0000ff" size="9pt">@GeneratedValue</font></span></u><span><font size="9pt"> 批注指定一个 </font></span><span><font color="#666666" size="9.0000pt">TABLE</font></span><span><font size="9pt"> 类型的主键生成器,可以使用 </font></span><span><font color="#666666" size="9.0000pt">@TableGenerator</font></span><span><font size="9pt"> 批注微调该主键生成器以:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">194 </font></span><span><font size="9pt">由于名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的表名无效而更改主键生成器的表名称</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">195 </font></span><span><font size="9pt">更改分配大小以匹配应用程序要求或数据库性能参数</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">196 </font></span><span><font size="9pt">更改初始值以匹配现有的数据模型(例如,如果基于已经为其分配或保留了一组主键值的现有数据集构建)</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">197 </font></span><span><font size="9pt">使用特定目录或模式配置主键生成器的表</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">198 </font></span><span><font size="9pt">在主键生成器表的一列或多列商配置一个唯一的约束</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-46</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-46 @TableGenerator </span></font><span>属性</span> </p> <table> <tr> <td style="width: 60.9500pt" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 40.5500pt" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 313.7000pt" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">name</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">SequenceGenerator</font></span><span><font size="9pt"> 的名称必须匹配其 </font></span><span><font color="#666666" size="9.0000pt">startegy</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">startegy</font></span><span><font size="9pt"> 的</font></span><span><font color="#666666" size="9.0000pt">GeneratedValue</font></span><span><font size="9pt"> 的名称。生成器名称的作用域对持续性单元是全局的(跨所有生成器类型)。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">allocationSize</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>50.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用的分配大小为 </span><span><font size="9pt">50</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果此分配大小与应用程序要求或数据库性能参数不匹配,请将</font></span><span><font color="#666666" size="9.0000pt">allocationSize</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">catalog</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认目录。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认目录不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">catalog</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 目录名。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">initialValue</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值: </font></span><font size="9pt"><span>0.</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将所有主键值的起始值设置为 </span><span><font size="9pt">0</font></span><span>。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果这与现有数据模型不匹配,请将 </font></span><span><font color="#666666" size="9.0000pt">initialValue</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">int</font></span><span><font size="9pt"> 值。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">pkColumnName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为生成器表中的主键列提供名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该名称不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">pkColumnName</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">名称。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">pkColumnValue</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为生成器表中的主键列提供一个合适的主键值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果该值不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">pkColumnValue</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt">值。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">schema</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用任何适用于数据库的默认模式。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认模式不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">schema</font></span><span><font size="9pt"> 设置为要使用的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 模式名。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">table</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为存储生成的 </span><span><font size="9pt">ID </font></span><span>值的表提供了一个合适的名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认表名不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">table</font></span><span><font size="9pt"> 设置为所需的 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 表名。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">uniqueConstraints</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设主键生成器表中的任何列均没有唯一约束。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果唯一约束应用于该表中的一列或多列,则将 </font></span><span><font color="#666666" size="9.0000pt">uniqueContraints</font></span><span><font size="9pt"> 设置为一个或多个 </font></span><span><font color="#666666" size="9.0000pt">UniqueConstraint</font></span><span><font size="9pt"> 实例的数组。有关详细信息,请参阅</font></span><u><span><font color="#0000ff" size="9pt">@UniqueConstraint</font></span></u><span><font size="10.5000pt">。</font></span> </p> </td> </tr> <tr> <td style="width: 60.9500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="81"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">valueColumnName</font></span> </p> </td> <td style="width: 40.5500pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="54"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 313.7000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="418"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认值:</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序为存储生成的 </span><span><font size="9pt">ID </font></span><span>值的列提供了一个合适的名称。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果默认列名不适合于应用程序,请将 </font></span><span><font color="#666666" size="9.0000pt">valueColumnName</font></span><span><font size="9pt"> 设置为所需的</font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-87</span></font></u><span><font size="9pt"> 显示了如何使用此批注为名为 </font></span><span><font color="#666666" size="9.0000pt">empGen</font></span><span><font size="9pt"> 的 </font></span><span><font color="#666666" size="9.0000pt">TABLE</font></span><span><font size="9pt"> 主键生成器指定分配大小。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-87 @TableGenerator</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Id</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @TableGenerator(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="empGen",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> allocationSize=1</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @GeneratedValue(strategy=TABLE, generator="empGen")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="CUST_ID")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public Long getId() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return id;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Temporal</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Temporal</font></span><span><font size="9pt"> 批注指定 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序应只为 </span><span><font color="#666666" size="9.0000pt">java.util.Date</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">java.util.Calendar</font></span><span><font size="9pt"> 类型的字段或属性持久保存的数据库类型。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">该批注可以与 </font></span><u><span><font color="#0000ff" size="9pt">@Basic</font></span></u><span><font size="9pt"> 一起使用。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-14</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-47 @Temporal </span></font><span>属性</span> </p> <table> <tr> <td style="width: 41.9000pt" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 41.9000pt" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 331.4000pt" width="441"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 41.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">value</font></span> </p> </td> <td style="width: 41.9000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="55"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 331.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="441"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">将 </font></span><span><font color="#666666" size="9.0000pt">value</font></span><span><font size="9pt"> 设置为与希望 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序使用的数据库类型相对应的 </span><span><font color="#666666" size="9.0000pt">TemporalType</font></span><span><font size="9pt">:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">198 </font></span><span><font color="#666666" size="9.0000pt">DATE</font></span><span><font size="9pt"> - </font></span><span>等于 </span><span><font color="#666666" size="9.0000pt">java.sql.Date</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">198 </font></span><span><font color="#666666" size="9.0000pt">TIME</font></span><span><font size="9pt"> - </font></span><span>等于 </span><span><font color="#666666" size="9.0000pt">java.sql.Time</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="10.0000pt">198 </font></span><span><font color="#666666" size="9.0000pt">TIMESTAMP</font></span><span><font size="9pt"> - </font></span><span>等于 </span><span><font color="#666666" size="9.0000pt">java.sql.Timestamp</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify">   </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-88</span></font></u><span><font size="9pt"> 显示了如何使用此批注指定 </font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序应将 </span><span><font color="#666666" size="9.0000pt">java.util.Date</font></span><span><font size="9pt"> 字段 </font></span><span><font color="#666666" size="9.0000pt">startDate</font></span><span><font size="9pt"> 持久保存为 </font></span><span><font color="#666666" size="9.0000pt">DATE</font></span><span><font size="9pt"> ( </font></span><span><font color="#666666" size="9.0000pt">java.sql.Date</font></span><span><font size="9pt">) </font></span><span>数据库类型。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-88 @Temporal</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Temporal(DATE)   protected java.util.Date startDate;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Transient</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设实体的所有字段均为持久字段。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Transient</font></span><span><font size="9pt"> 批注指定实体的非持久字段或属性,例如,一个在运行时使用但并非实体状态一部分的字段或属性。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">JPA </font></span><span>持续性提供程序不会对批注为 </span><span><font color="#666666" size="9.0000pt">@Transient</font></span><span><font size="9pt"> 的属性或字段持久保存(或创建数据库模式)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">该批注可以与 </font></span><u><span><font color="#0000ff" size="9pt">@Entity</font></span></u><span><font size="9pt">、 </font></span><u><span><font color="#0000ff" size="9pt">@MappedSuperclass</font></span></u><span><font size="9pt"> 和 </font></span><u><span><font color="#0000ff" size="9pt">@Embeddable</font></span></u><span><font size="9pt"> 一起使用。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">该批注没有属性。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-89</span></font></u><span><font size="9pt"> 显示了如何使用此批注将 </font></span><span><font color="#666666" size="9.0000pt">Employee</font></span><span><font size="9pt"> 字段 </font></span><span><font color="#666666" size="9.0000pt">currentSession</font></span><span><font size="9pt"> 指定为非持久字段。</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序将不持久保存该字段。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-89 @Transient</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entitypublic class Employee {   @Id int id;   @Transient Session currentSession;   ...}</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@UniqueConstraint</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设所有列均可以包含重复值。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@UniqueConstraint</font></span><span><font size="9pt"> 批注指定将在为主表或辅助表生成的 </font></span><font size="9pt"><span>DDL </span></font><span>中包含一个唯一约束。或者,您可以在列级别指定唯一约束(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">表 </font></span><font color="#0000ff" size="9pt"><span>1-48</span></font></u><span><font size="9pt"> 列出了此批注的属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">表 </font></span><font size="9pt"><span>1-48 @UniqueConstraint </span></font><span>属性</span> </p> <table> <tr> <td style="width: 63.3000pt" width="84"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">属性</font></b></span> </p> </td> <td style="width: 45.5000pt" width="60"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">必需</font></b></span> </p> </td> <td style="width: 306.4000pt" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="9pt">说明</font></b></span> </p> </td> </tr> <tr> <td style="width: 63.3000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="84"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font color="#666666" size="9.0000pt">columnNames</font></span> </p> </td> <td style="width: 45.5000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="60"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10.5000pt"><img alt="" height="18" width="18"> </font></span> </p> </td> <td style="width: 306.4000pt; border-top-style: none; border-top-color: border-color; border-top-width: medium" width="408"> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果任何列均包含唯一约束,请将 </font></span><span><font color="#666666" size="9.0000pt">columnNames</font></span><span><font size="9pt"> 设置为 </font></span><span><font color="#666666" size="9.0000pt">String</font></span><span><font size="9pt"> 列名的数组。</font></span> </p> </td> </tr> </table> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-90</span></font></u><span><font size="9pt"> 显示了如何使用此批注对主表 </font></span><span><font color="#666666" size="9.0000pt">EMP</font></span><span><font size="9pt"> 中的列 </font></span><span><font color="#666666" size="9.0000pt">EMP_ID</font></span><span><font size="9pt"> 和 </font></span><span><font color="#666666" size="9.0000pt">EMP_NAME</font></span><span><font size="9pt"> 指定一个唯一约束。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-90 </span></font><span>使用唯一约束的 </span><span><font size="9pt">@Table</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Table(</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> name="EMP",</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> uniqueConstraints={@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})}</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> )</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">@Version</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">默认情况下,</font></span><font size="9pt"><span>JPA </span></font><span>持续性提供程序假设应用程序负责数据一致性。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">使用 </font></span><span><font color="#666666" size="9.0000pt">@Version</font></span><span><font size="9pt"> 批注通过指定用作其乐观锁定值的实体类的版本字段或属性来启用 </font></span><font size="9pt"><span>JPA </span></font><span>管理的乐观锁定(推荐做法)。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">选择版本字段或属性时,确保:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">199 </font></span><span><font size="9pt">每个实体只有一个版本字段或属性</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">200 </font></span><span><font size="9pt">选择一个持久保存到主表的属性或字段(请参阅 </font></span><font size="9pt"><u><span>@Table</span></u><span>)</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">201 </font></span><span><font size="9pt">您的应用程序不修改版本属性或字段</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">此批注没有属性 。有关更多详细信息,请参阅 </font></span><u><span><font color="#0000ff" size="9pt">API</font></span></u><span><font size="9pt">。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">示例 </font></span><font color="#0000ff" size="9pt"><span>1-91</span></font></u><span><font size="9pt"> 显示了如何使用此批注将属性 </font></span><font size="9pt"><span>getVersionNum </span></font><span>指定为乐观锁定值。在该示例中,该属性的列名设置为 </span><span><font size="9pt">OPTLOCK</font></span><span>(请参阅 </span><u><span><font color="#0000ff" size="9pt">@Column</font></span></u><span><font size="9pt">),而非属性的默认列名。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">示例 </font></span><font size="9pt"><span>1-91 @Version</span></font> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">@Entity</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public class Employee implements Serializable {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Version</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> @Column(name="OPTLOCK")</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> protected int getVersionNum() {</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> return versionNum;</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    }</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt">    ...</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> }</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><b><font size="12pt">生命周期事件批注</font></b></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果需要在生命周期事件期间执行自定义逻辑,请使用以下生命周期事件批注关联生命周期事件与回调方法:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">202 </font></span><span><font size="9pt">@PostLoad</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">203 </font></span><span><font size="9pt">@PostPersist</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">204 </font></span><span><font size="9pt">@PostRemove</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">205 </font></span><span><font size="9pt">@PostUpdate</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">206 </font></span><span><font size="9pt">@PrePersist</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">207 </font></span><span><font size="9pt">@PreRemove</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="10pt">208 </font></span><span><font size="9pt">@PreUpdate</font></span></u> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <u><span><font color="#0000ff" size="9pt">图 </font></span><font color="#0000ff" size="9pt"><span>1-1</span></font></u><span><font size="9pt"> 演示了 </font></span><font size="9pt"><span>JPA </span></font><span>支持的实体生命周期事件之间的关系。</span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">可以直接对实体方法进行批注,也可以指定一个或多个实体监听程序类(请参阅 </font></span><u><span><font color="#0000ff" size="9pt">@EntityListeners</font></span></u><span><font size="9pt">)。</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="9pt">如果直接对实体方法进行批注,则该实体方法必须满足以下要求:</font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">209 </font></span><span><font size="9pt">实体类方法必须具有以下签名:</font></span><span><font size="10.5000pt"><br></font></span><span><font size="9pt"> public int <MethodName>()</font></span><span><font size="10.5000pt"><br></font></span> </p> <p class="p0" style="margin-bottom: 0pt; margin-top: 0pt" align="justify"> <span><font size="10pt">210 </font></span><span><font size="9pt">实体类方法可以有任何方法名称,只要它不以 </font></span><span><font color="#666666" size="9.0000pt">ejb</font></span><span><font size="9pt"> 开头。</font></span> </p> <div align="justify"> <span><b><font size="10.5pt">@PostLoad</font></b></span> </div> </div>
返回