JPA 主键@Id、@IdClass、@Embeddable、@EmbeddedId
来源:互联网 发布:strider军刀 淘宝 编辑:程序博客网 时间:2024/03/29 21:43
1、自动主键
默认情况下,主键是一个连续的64位数字(long),它由ObjectDB自动为存储在数据库中的每个新实体对象自动设置。数据库中的第一个实体对象的主键是1,第二个实体对象的主键是2等等。当从数据库中删除实体对象时,主键值不会被回收。
一个实体的主键值可以通过声明一个主键字段来访问:
@Entitypublic class Project { @Id @GeneratedValue long id; // still set automatically}
@id标注将字段标记为一个主键字段。当定义主键字段时,主键值将被ObjectDB自动注入到该字段中。
@generatedvalue注释指定主键是由ObjectDB自动分配的
2、应用设置主键
如果一个实体有一个没有@generatedvalue标记的主键字段,则不会生成自动主键值,并且应用程序负责通过初始化主键字段来设置主键。这必须在持久化实体对象的任何尝试之前完成。
@Entitypublic class Project { @Id long id; // must be initialized by the application}
应用程序设置的主键字段可以有以下类型:
● 原始类型: boolean, byte, short, char, int, long, float, double.
● java.lang包中的包装类型:Byte, Short, Character, Integer, Long, Float, Double.
● java.math.BigInteger, java.math.BigDecimal.
● java.lang.String.
● java.util.Date, java.sql.Date, java.sql.Time, java.sql.Timestamp.
● 枚举类型
● 引用一个实体对象
3、复合主键
复合主键由多个主键字段组成。每个主键字段必须是上面列出的支持类型之一。
例如,以下项目实体类的主键由两个字段组成:
@Entity @IdClass(ProjectId.class)public class Project { @Id int departmentId; @Id long projectId;}
当一个实体有多个主键字段时,JPA需要定义一个特殊的ID类,该类是使用@idclass注释附加到实体类的。ID类反映了主键字段,它的对象可以表示主键值:
Class ProjectId { int departmentId; long projectId;}
ObjectDB不强制定义ID类。但是,如果实体对象必须按照检索实体部分中所示的主键来检索实体对象,那么就需要ID类。
4、嵌入式主键
表示复合主键的另一种方法是使用可嵌入的类:
@Entitypublic class Project { @EmbeddedId ProjectId id;}@EmbeddableClass ProjectId { int departmentId; long projectId;}
主键字段是在可嵌入类中定义的。该实体包含一个单独的主键字段,该字段用@EmbeddedId 注释,并包含一个可嵌入类的实例。当使用这个表单时,没有定义一个单独的ID类,因为可嵌入的类本身可以表示完整的主键值。
- JPA 主键@Id、@IdClass、@Embeddable、@EmbeddedId
- JPA联合主键的使用(@EmbeddedId+@Embeddable)
- JPA 菜鸟教程 13 复合主键-@EmbeddedId+@Embeddable
- JPA 菜鸟教程 12 复合主键-2个@Id+@IdClass
- Hibernate @IdClass @EmbeddedID相关注解
- 复合主键@IdClass
- @IdClass @IdClass 联合主键的 警告
- 嵌入式主键@EmbeddedId
- 嵌入式主键@EmbeddedId
- 嵌入式主键@EmbeddedId
- JPA的Embeddable注解
- JPA的Embeddable注解
- JPA的Embeddable注解
- 在jpa的JpaRepository需要对符合主键@EmbeddedId 中的一个字段进行查询的用法
- 复合主键的配置 @idClass
- 注解开发嵌入式主键@EmbeddedId
- Hibernate基础之六:联合主键@EmbeddedId
- JPA 菜鸟教程 11 复合主键-2个@Id
- 线程间的通信方式
- 51Nod-1073 约瑟夫环
- ip地址转化为其他进制
- JWT.net操作实践
- jenkins 对 maven对应的 jvm 配置参数
- JPA 主键@Id、@IdClass、@Embeddable、@EmbeddedId
- 面试问题
- 宏和函数小记
- 大数据未来应用7大趋势 人工智能只占其一
- 下一步
- 有趣的思路题集锦from bzoj/codefoces(乱搞)
- 鸡的选择问题--回溯法
- while,do-while,for循环特点区分
- 欢迎使用CSDN-markdown编辑器