JPA @Id 和 @GeneratedValue 注解介绍

2023-11-10

转载自一个404页面

@Id
@Id 注解用于声明一个实体类的属性映射为数据库的主键列
该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
@Id标注也可置于属性的getter方法之前。

@GeneratedValue:
@GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer对应identity,MySQL 对应 auto increment。
在javax.persistence.GenerationType中定义了以下几种可供选择的策略:
–IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式;
–AUTO: JPA自动选择合适的策略,是默认选项;
–SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
–TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

推荐的两种写法:
属性之上:

@Table(name=”CUSTOMERS”)
@Entity
public class Customer {
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
private Integer id;
private String name;
private String email;
private int age;

public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

getter方法之上:

@Table(name=”CUSTOMERS”)
@Entity
public class Customer {
private Integer id;
private String name;
private String email;
private int age;

@GeneratedValue(strategy=GenerationType.AUTO)
@Id
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

但是不能某个注解在属性之上,某个注解在getter之上,将抛出异常,对其他注解也相同

@Table(name=”CUSTOMERS”)
@Entity
public class Customer {
@Id
private Integer id;
private String name;
private String email;
private int age;

@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

上面的写法是错误的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA @Id 和 @GeneratedValue 注解介绍 的相关文章

  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti
  • EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配

    当运行由maven构建的具有以下依赖项的项目时
  • @PreUpdate 不适用于 Spring Data JPA

    我有一个实体 Entity EntityListeners MyEntityListener class class MyEntity 还有听者 class MyEntityListener PrePersist PreUpdate pub
  • 具有 JPA、PostgreSQL 和 NULL 值的 JodaTime

    我试图将 JPA 的 JodaTime DateTime 字段保留到 PostgreSQL 但遇到了指向数据库 NULL 值的空指针的问题 我正在使用 NetBeans 7 beta 2 IDE 持久性实现是 EclipseLink 2 2
  • ManyToOne 关系上的 Hibernate @Where 注释

    我最近开始重构我的项目 因为我必须在一些表中添加额外的列 额外的列是一个枚举 待定或活动 由于这一更改 我现在需要重构所有查询 以便仅在状态为 活动 时检索行 经过一些研究 我发现我们可以使用 Where 注释来注释实体 当我在简单的列上使
  • 尽管 JPA Converter 可用,但 org.hibernate.MappingException

    我有一个自己的 Id 类型 public class Id
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • JPA EntityManager 缓存

    我有一个实体定义如下 public class Version Id private Long id private String content Transient private Model model 据我所知 当find操作是在实体
  • 打开新EntityManager后线程锁

    我在使用 Spring JPA 事务时遇到一个非常奇怪的错误 该线程被锁定大约 16 分钟 然后继续 没有任何问题 情况如下 Transactional propagation Propagation REQUIRES NEW public
  • 多个罐子、单个持久单元解决方案?

    包括我在内的一些人一直在努力将不同模块 jar 中的实体合并到单个持久性单元中 尤其是JavaSE 例如这里JPA 2 0 自动从不同的 jar 添加实体类到 PersistenceUnit https stackoverflow com
  • 如何在没有@Transactional的情况下使用Hibernate @Filter?

    我使用 Hibernate Filter 和 Spring Data 为项目中的每个查询添加特定的 where 子句 问题是 只要我对 findAll 方法使用 Transactional 注释 它就可以工作 有什么办法可以避免使用 Tra
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • JPA OneToOne 双向。

    我有两个处于 OneToOne 关系的实体类 示例代码如下 public class A Id private int id private String name JoinColumn name B ID referencedColumn
  • 带 where 子句的 JPA 选择查询

    我想写一个 select 语句 但不知道如何写 where 子句 My code CriteriaQuery query entityManager getCriteriaBuilder createQuery query select q
  • 验证错误值无效[重复]

    这个问题在这里已经有答案了 我知道这是一个常见的错误 并且有很多关于它的问题 但我必须创建一个新的问题 这是我的 jsf 页面
  • JPA - OneToOne 外键作为主键

    我有一个表 需要其主键作为其他表的外键 因此是单向的一对一关系 每本书只有一个作者 如下所示 Entity public class Author Id String code getters and setters Entity publ
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • JPA 实体中的枚举字段

    我觉得问这个问题有点愚蠢 但我找不到这个问题的任何简单答案 以这个简单的实体为例 Entity Table name clienti public class Cliente implements Serializable private

随机推荐

  • tril--下三角矩阵的抽取

    功能简介 抽取下三角矩阵 语法格式 L tril X k 抽取矩阵中第k条对角线及其以下的元素 k 0指主对角线 k gt 0指主对角线以上的第k条对角线 k lt 0指主对角线以下的第k条对角线 格式变体 L tril X 返回矩阵的下三
  • FFMPEG转码后得到的MP4必须要加载完才能播放的问题

    使用videoview时出现提示 不适合在此设备上播放 但是下载之后又可以播 百思不解 还是看下高人的解决方法 FFMpeg转码由此得到的mp4文件中 meta信息是在文件尾部的 而 videoview 在没有得到meta信息前不会播放文件
  • c++ decltype推导类型

    一 decltype关键字简介 在C 11中 decltype 是一个操作符 用于查询表达式的数据类型 而不会计算实际执行表达式的值 其语法如下 decltype expression var decltype 分析表达式并推导出其类型 它
  • Java中的String,这一篇就够了

    目录 1 String的重要性 2 常用语法 2 1字符串构造 2 2 String对象的比较 2 3 字符串查找 2 4 转化 2 5字符串替换 2 6字符串拆分 示例1 实现字符串的拆分处理 示例2 字符串的部分拆分 示例3 拆分IP地
  • python爬虫从入门到精通

    目录 一 正确认识Python爬虫 二 了解爬虫的本质 1 熟悉Python编程 2 了解HTML 3 了解网络爬虫的基本原理 4 学习使用Python爬虫库 三 了解非结构化数据的存储 1 本地文件 2 数据库 四 掌握各种技巧 应对特殊
  • Vue3中如何点击外部button进行van-form表单验证

    Vue3中如何点击外部button进行表单验证 1 html页面 1 1 代码 1 2 注意项 2 JS部分核心代码 1 html页面 1 1 代码
  • Echarts双x轴不等分堆叠柱状图加折线

    效果图 核心配置 在指定x轴显示柱状图 1 series data数据格式 value x轴名称 117 第一项代表在x轴显示的下标位置 117为数据量 每个柱状图都显示单独的名称 1 在首组数据前再添加一项数据 数据量为0 视图就无法显示
  • Biggest Number深搜

    Description You have a maze with obstacles and non zero digits in it You can start from any square walk in the maze and
  • 【设计模式】装饰器模式

    装饰器模式 Decorator Pattern 允许向一个现有的对象添加新的功能 同时又不改变其结构 这种类型的设计模式属于结构型模式 它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中 以便动态地修改其行为 这种模式创建了一
  • Ogre:Hardwarebuffer

    Ogre Hardwarebuffer 分类 OGRE 2012 07 03 15 56 1097人阅读 评论 0 收藏 举报 buffer float byte 存储 图形 upload Ogre中的硬件缓存是指在显卡上的存储 这和在内存
  • matlab小问题

    编了一个MATLAB小程序 遇到这样的问题 首先代码如下 filename strcat 00 int2str i jpg n i 1 filename 问题为 Subscripted assignment dimension mismat
  • 大数据技术之 Maxwell(1.29.2版本)(最新最全教程)

    第 1 章 Maxwell 概述 1 1 Maxwell 定义 Maxwell 是由美国 Zendesk 开源 用 Java 编写的 MySQL 实时抓取软件 实时读取MySQL 二进制日志 Binlog 并生成 JSON格式的消息 作为生
  • DNN

    文章目录 前向传播 从感知机到神经网络 DNN的基本结构 DNN前向传播算法数学原理 DNN前向传播算法 反向传播算法 BP DNN反向传播算法要解决的问题 DNN反向传播算法的基本思路 DNN反向传播算法过程 损失函数和激活函数的选择 均
  • VSCode使用embed

    VSCode使用embed在html文件中加载网络视频和图片 最近研究html 好奇如何把图片和视频加到网页上 目前只学习到embed可以加载成功网上的视频和图片 代码如下 更多的关于图片格式问题 以及使用embed加载本地视频 图片仍待研
  • 学习笔记 JavaScript ES6 深拷贝与浅拷贝

    学习内容 如何把一个对象复制给另一个对象 如何把一个对象复制给另一个对象 浅拷贝的可以理解为对象拷贝成功后 当有一个对象发生变化时 另一个也受到影响 这个主要是与引用地址有关 用Object assign 方法进行拷贝不安全 是潜拷贝 来看
  • Spring源码从入门到精通---@Value赋值(十)

    上篇文章介绍了BeanPostProcessor spring框架生命周期 PostConstruct PreDestroy InitializingBean disposableBean接口 依赖注入 Autowird都离不开这个接口 B
  • Python兼职五天赚3000,方法经验分享,带你实现财富自由!!!

    大学生用Python兼职五天狂赚1200 方法经验分享 让你早日实现财富自由 现在的年轻人虽然表面风光 可是却很难攒下钱 这一类人被定义为 隐形贫困者 原因是什么呢 根据小编的分析 现在人们对生活质量要求普遍提高了 但是工资没有跟得上自己的
  • 正则表达式之-验证邮箱

    一 邮箱正则概述 昨天在开发项目的时候 有一个验证邮箱的需求 本来想着自己写一个正则表达式来验证的 但是写的时候却发现很多关于正则的知识都忘的差不多了 有些东西想记住真的就要重复练习 看明白了没有用 要天天练习才行 于是在参考了众多资料之后
  • 使用servlet处理HTTP响应

    1 解释http协议中包含哪几部份 状态行 放的是协议 版本 状态码描述 响应头 键 值 空行 内容 消息体 2 解释状态行的作用 有哪些常见的状态码 分别代表什么含义 状态行作用在Servlet中设置状态码来实现许多重要功能 状态码 20
  • JPA @Id 和 @GeneratedValue 注解介绍

    转载自一个404页面 Id Id 注解用于声明一个实体类的属性映射为数据库的主键列 该属性通常置于属性声明语句之前 可与声明语句同行 也可写在单独行上 Id标注也可置于属性的getter方法之前 GeneratedValue Generat