JPA注解详解(一)

系统 2023 0

 

@Table

默认情况下, JPA 持续性提供程序假设实体的所有持久字段均存储到一个名称为实体名称的数据库表中(请参阅 @Entity )。

在以下条件下,使用 @Table 批注指定与实体关联的主表:

·     实体名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的表名无效

·     需要控制表所属的目录或模式

如果希望 JPA 将某些字段持久保存到主表,而将其他字段持久保存到一个或多个辅助表,请参阅 @SecondaryTable

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

1-45 @Table 属性

属性

必需

说明

catalog

可选

 

默认值: JPA 持续性提供程序使用任何适用于数据库的默认目录。

如果默认目录不适合于应用程序,请将 catalog 设置为要使用的 String 目录名。

name

可选

 

默认值: JPA 持续性提供程序假设实体的数据库表与实体类同名。在 示例 1-86 中,默认 name Employee

如果实体类名难以处理、是一个保留字或与预先存在的数据模型不兼容,请将 name 设置为相应的数据表名称。在 示例 1-86 中, JPA 将实体类 Employee 持久保存到名为 EMP 的数据库表中。

schema

可选

 

默认值: JPA 持续性提供程序使用任何适用于数据库的默认模式。

如果默认模式不适合于应用程序,请将 schema 设置为要使用的 String 模式名。

uniqueConstraints

可选

 

默认值: JPA 持续性提供程序假设实体的数据库表中的任何列均没有唯一约束。

如果唯一约束应用于该表中的一列或多列,请将 uniqueContraints 设置为一个或多个 UniqueConstraint 实例的数组。有关详细信息,请参阅 @UniqueConstraint

 

示例 1-86 显示了如何使用此批注指定主表名。

示例 1-86 @Table

@Entity

@Table(name="EMP")

public class Employee implements Serializable {

    ...

}

 

@TableGenerator

如果使用 @GeneratedValue 批注指定一个 TABLE 类型的主键生成器,可以使用 @TableGenerator 批注微调该主键生成器以:

·     由于名称难于处理、是一个保留字、与预先存在的数据模型不兼容或作为数据库中的表名无效而更改主键生成器的表名称

·     更改分配大小以匹配应用程序要求或数据库性能参数

·     更改初始值以匹配现有的数据模型(例如,如果基于已经为其分配或保留了一组主键值的现有数据集构建)

·     使用特定目录或模式配置主键生成器的表

·     在主键生成器表的一列或多列商配置一个唯一的约束

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

1-46 @TableGenerator 属性

属性

必需

说明

name

必需

 

SequenceGenerator 的名称必须匹配其 startegy 设置为 startegy GeneratedValue 的名称。生成器名称的作用域对持续性单元是全局的(跨所有生成器类型)。

allocationSize

可选

 

默认值: 50.

默认情况下, JPA 持续性提供程序使用的分配大小为 50

如果此分配大小与应用程序要求或数据库性能参数不匹配,请将 allocationSize 设置为所需的 int 值。

catalog

可选

 

默认值: JPA 持续性提供程序使用任何适用于数据库的默认目录。

如果默认目录不适合于应用程序,请将 catalog 设置为要使用的 String 目录名。

initialValue

可选

 

默认值: 0.

默认情况下, JPA 持续性提供程序将所有主键值的起始值设置为 0

如果这与现有数据模型不匹配,请将 initialValue 设置为所需的 int 值。

pkColumnName

可选

 

默认值: JPA 持续性提供程序为生成器表中的主键列提供名称。

如果该名称不适合于应用程序,请将 pkColumnName 设置为所需的 String 名称。

pkColumnValue

可选

 

默认值: JPA 持续性提供程序为生成器表中的主键列提供一个合适的主键值。

如果该值不适合于应用程序,请将 pkColumnValue 设置为所需的 String 值。

schema

可选

 

默认值: JPA 持续性提供程序使用任何适用于数据库的默认模式。

如果默认模式不适合于应用程序,请将 schema 设置为要使用的 String 模式名。

table

可选

 

默认值: JPA 持续性提供程序为存储生成的 ID 值的表提供了一个合适的名称。

如果默认表名不适合于应用程序,请将 table 设置为所需的 String 表名。

uniqueConstraints

可选

 

默认值: JPA 持续性提供程序假设主键生成器表中的任何列均没有唯一约束。

如果唯一约束应用于该表中的一列或多列,则将 uniqueContraints 设置为一个或多个 UniqueConstraint 实例的数组。有关详细信息,请参阅 @UniqueConstraint

valueColumnName

可选

 

默认值: JPA 持续性提供程序为存储生成的 ID 值的列提供了一个合适的名称。

如果默认列名不适合于应用程序,请将 valueColumnName 设置为所需的 String 列名。

 

示例 1-87 显示了如何使用此批注为名为 empGen TABLE 主键生成器指定分配大小。

示例 1-87 @TableGenerator

@Entity

public class Employee implements Serializable {

    ...

@Id

@TableGenerator(

name="empGen",

allocationSize=1

    )

@GeneratedValue(strategy=TABLE, generator="empGen")

@Column(name="CUST_ID")

public Long getId() {

return id;

    }

    ...

 

@Temporal

使用 @Temporal 批注指定 JPA 持续性提供程序应只为 java.util.Date java.util.Calendar 类型的字段或属性持久保存的数据库类型。

该批注可以与 @Basic 一起使用。

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

1-47 @Temporal 属性

属性

必需

说明

value

必需

 

value 设置为与希望 JPA 持续性提供程序使用的数据库类型相对应的 TemporalType

  • DATE - 等于 java.sql.Date
  • TIME - 等于 java.sql.Time
  • TIMESTAMP - 等于 java.sql.Timestamp

 

示例 1-88 显示了如何使用此批注指定 JPA 持续性提供程序应将 java.util.Date 字段 startDate 持久保存为 DATE ( java.sql.Date ) 数据库类型。

示例 1-88 @Temporal

@Entity

public class Employee {

    ...

@Temporal(DATE)     protected java.util.Date startDate;

    ...

}

JPA注解详解(一)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论