日期:2014-05-16  浏览次数:20469 次

JPA注解详解(二)

@Transient

默认情况下,JPA 持续性提供程序假设实体的所有字段均为持久字段。

使用 @Transient 批注指定实体的非持久字段或属性,例如,一个在运行时使用但并非实体状态一部分的字段或属性。

JPA 持续性提供程序不会对批注为 @Transient 的属性或字段持久保存(或创建数据库模式)。

该批注可以与 @Entity @MappedSuperclass @Embeddable 一起使用。

该批注没有属性。有关更多详细信息,请参阅 API

示例 1-89 显示了如何使用此批注将 Employee 字段 currentSession 指定为非持久字段。JPA 持续性提供程序将不持久保存该字段。

示例 1-89 @Transient

@Entitypublic class Employee {??? @Id int id;??? @Transient Session currentSession;??? ...}

@UniqueConstraint

默认情况下,JPA 持续性提供程序假设所有列均可以包含重复值。

使用 @UniqueConstraint 批注指定将在为主表或辅助表生成的 DDL 中包含一个唯一约束。或者,您可以在列级别指定唯一约束(请参阅 @Column )。

表 1-48 列出了此批注的属性。有关更多详细信息,请参阅 API

1-48 @UniqueConstraint 属性

属性

必需

说明

columnNames

必需

?

如果任何列均包含唯一约束,请将 columnNames 设置为 String 列名的数组。

?

示例 1-90 显示了如何使用此批注对主表 EMP 中的列 EMP_ID