这个官方早就想到了,save方法会返回一个对象,调用这个对象的getId()方法即可。
Product product = new Product();
product.setName("mobile");
product.setDelFlag("0");
Product result = productRepository.save(product);
System.out.println(result.getId());
这个官方早就想到了,save方法会返回一个对象,调用这个对象的getId()方法即可。Product product = new Product();product.setName("mobile");product.setDelFlag("0");Product result = productRepository.save(product);System.out.println(re...
今天做项目遇到了一个问题,是以前没注意的。我用的是Spring MVC+ Hibernate JPA + MySQL数据库。在插入数据后SQL执行日志中会多出一条select语句: 代码如下:Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id()表中有个主键是自增列。可是在以往的项目中,没发现有这样的问题。于是在网上各种找也找不到原因。心想可能是配置问题。
最终在persistence.xml配置文件中找
转载自https://blog.csdn.net/ansedon/article/details/725668171.为实体类的id注解 @GeneratedValue(strategy=GenerationType.IDENTITY) 指定id的生成策略@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name...
文章目录一、自增操作1.数据库中的表是自增的2.Entity类的annatation和setter、getter方法3.Service(1)saveAndFlush(2)为何自增的id是非null二、更新操作1.DAO2.saveAndFlush()机制Reference
一、自增操作
1.数据库中的表是自增的
AI表示Auto Increme
2.Entity类的annatation和set...
(1)在实体主键上加@GeneratedValue(strategy = GenerationType.IDENTITY)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
(2)save之后
Product p=mdao.save(product);
System.out.pr...
项目中使用Spring +Hibernate+jpa。有场景需要保存实体后获取实体的主键进行下一步的操作。
经过查询资料以及参考通过修改主键注解的方式。即
@DocumentId
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
实际就是strategy 的修改,查询源码:
public enum Ge...
create or replace trigger rm_sequence_trigger --定时器名
before insert
on resource_manage -- 表名
for each row
begin
select rmsequence.nextval i...
在开发里面时长会用到ID自增。目前大多数的ID自增都是依赖数据库实现的,不同数据库实现ID自增都有或多或少的差异。这样就导致程序在迁移不同数据库的时候需要针对ID自增这里做特殊处理。为了少做处理,这里直接用程序来实现自增ID。不依赖数据库特性。
具体思路是通过注解@GeneratedValue和@GenericGenerator 来自定义一个主键生成策略 SeqPKGenerator 继承 IdentifierGenerator,在主键生成方法generate()上自己定义主键生成规则。
关于ID生成规
JpaRepository已经封装好了许多方法,例如:findAll,但是实际中我们往往要加入一些条件,例如del_flag= 0 ,难道要改JpaRepository的源码么,当然不:
在实体类中使用@Where即可。
@Entity
@Where(clause="del_Flag = 0 ")
public class Category {
那么打印的sql为:
可以发现自动加上查询条...
在使用 JPA 的 `save` 方法保存实体后,可以通过实体对象的 `getId` 方法获取数据库自增的 ID 值。但是,对于某些数据库(如 MySQL)的自增 ID,需要在保存实体后才能获取到自增的 ID 值。因此,JPA 提供了另外一种方式来获取自增 ID 值。
使用 JPA 的 `save` 方法保存实体时,可以通过返回值来获取自增 ID 值。`save` 方法返回保存后的实体对象,因此可以通过该对象的 `getId` 方法来获取自增 ID 值。例如:
```java
// 假设有一个 User 实体类
@Entity
public class User {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 其他属性和方法省略
// 在使用 JPA 的 save 方法保存 User 实体后,可以这样获取自增 ID
User user = new User();
user = userRepository.save(user);
Long generatedId = user.getId();
上述代码中,`userRepository` 是 JPA 提供的用于操作 User 实体的仓库类。保存 User 实体后,通过 `save` 方法返回保存后的实体对象,然后通过该对象的 `getId` 方法获取自增 ID 值。