`
lp895876294
  • 浏览: 284751 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JPA保存记录无法获取保存后记录的ID

    博客分类:
  • JPA
 
阅读更多

出现如题问题,可以检查如下方面:

1.保证更新方法上的事务允许更新操作。可能出现的情形为:在类上用事务标签@Transactional(readOnly = true)声明事务只允许读,而在类方法上没有声明事务标签,则类方法的事务继承类的事务。

2.保存实体的id=null,而不是空字符。如果id不是null,在保存后JPA不会重新设置id的值。此情形经常被忽略,因为保存和编辑的页面经常共用一个页面,而编辑页面中记录id作为一个hidden组件的值存在,导致提交表单时将id也一起提交。

 

分享到:
评论

相关推荐

    jpa例子jpajpa

    JPA允许你在Java应用程序中以对象的形式处理数据,这些对象可以自动转换为数据库中的记录。 在JPA的例子中,我们通常会涉及以下几个核心概念: 1. **实体(Entity)**: 实体是与数据库表相对应的Java类。它们通常...

    JPA基础语法资料--JPA_Basic

    JPA中的核心是实体(Entity),它代表数据库表中的一个记录。在Java类中,通过`@Entity`注解来标记一个类为实体。例如: ```java @Entity public class User { @Id private Long id; private String name; /...

    基于JPA的CRUD例子

    读取操作(Read):`find()`方法根据实体ID获取数据库中的记录。 ```java Long personId = 1L; // 假设这是已存在的ID Person foundPerson = entityManager.find(Person.class, personId); System.out.println...

    JPA实用讲义

    2. **加载(Find)**:通过`entityManager.find(EntityClass, id)`获取特定ID的实体实例。 3. **更新(Merge)**:`entityManager.merge(entity)`将内存中的实体状态同步到数据库,即使实体没有被持久化过。 4. **...

    JPA笔记

    2. **查找实体(Read)**: `EntityManager.find()`可以根据ID获取实体,`Query`接口则支持复杂的SQL查询和JPQL(Java Persistence Query Language)。 3. **更新实体(Update)**: 当实体状态改变时,JPA会自动检测...

    jpa的自定义CURD

    在JPA中,创建新记录通常是通过`EntityManager`的`persist()`方法完成的。首先,你需要定义一个实体类,它代表数据库中的表,并使用`@Entity`注解标记。然后,创建实体对象并设置其属性,最后调用`persist()`方法将...

    springboot与jpa整合开发

    1. **保存实体**: 测试插入新记录,如`repository.save(new Entity())`。 2. **查询实体**: 使用`findAll()`、`findById()`等方法获取所有或特定实体。 3. **更新实体**: 修改实体属性后,调用`repository.save...

    jpa.rar_Java JPA

    4. 查询(Find):`entityManager.find(Entity.class, id)`根据实体类和ID获取实体。 5. JPQL(Java Persistence Query Language):JPA提供的SQL的面向对象版本,用于查询实体。 三、JPA的继承策略 JPA支持多种...

    Jpa的创建和增删改查的代码

    2. **读取(Read)**: `find()`方法根据实体ID获取实体。此外,`createQuery()`或`createNativeQuery()`可以创建JPQL(Java Persistence Query Language)或原生SQL查询。 3. **更新(Update)**: 修改实体属性后,...

    黑马程序员 jpa详解视频教程配套源代码 笔记 jar包 很全的

    例如,`entityManager.persist(entity)`用来保存一个新的实体,`entityManager.find(Entity.class, id)`则用于根据ID获取实体。 再者,JPA支持查询语言——JPQL(Java Persistence Query Language),类似于SQL,但...

    07_JPA详解_使用JPA加载_更新_删除对象.zip

    `EntityManager`是JPA的核心接口,负责处理实体的生命周期,如加载、保存、更新和删除实体。 ### 2. 加载对象 #### 2.1 find()方法 使用`EntityManager`的`find()`方法可以按主键加载实体。例如: ```java ...

    spring data jpa1.7 中文

    <bean id="personRepository" class="org.springframework.data.jpa.repository.support.SimpleJpaRepository"> ``` - **Java Config**: - 也可以通过 Java 配置类来定义 Repository 实例。 - 示例: ``...

    jpa--15.jpa基本api

    JPA通过提供一套API和元数据来定义如何将Java类映射到数据库表,以及如何在Java对象和数据库记录之间进行转换。 ### JPA基本概念 1. **实体(Entity)**: 在JPA中,实体代表数据库中的表,通常是一个Java类,用`@...

    JPA规范 1.0

    EntityManager是JPA的核心接口,它负责管理实体的生命周期,包括加载、保存、更新和删除实体。通过`EntityManagerFactory`可以获取到`EntityManager`实例,然后通过`persist()`方法持久化新对象,`merge()`方法更新...

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    例如,我们可以创建一个`AuditListener`类,继承`AbstractPreInvocationEventListener`,并在`onPreUpdate()`和`onPreInsert()`方法中,获取实体的旧值和新值,并将其保存到审计日志表中。审计日志表通常包含操作...

    JPA技术:年初写的办公室OA系统

    1. **实体(Entity)**: 在JPA中,实体代表数据库表中的记录,通常是一个Java类,通过`@Entity`注解标识。实体类的属性对应于表的列。 2. **实体管理器(EntityManager)**: 是JPA的主要接口,负责处理数据库的CRUD...

    jpa--9.单向多对一

    - 要保存或更新Employee,我们可以直接调用`EntityManager`的`persist()`或`merge()`方法,JPA会处理外键的设置。 - 读取Employee时,可以直接访问`department`属性获取对应的Department实例。 4. **懒加载与即时...

    07_传智播客JPA详解_使用JPA加载_更新_删除对象

    当我们修改了实体对象的属性后,只需调用实体管理器的`merge()`方法,JPA会自动检测对象的变化并将其同步到数据库。如果对象尚未持久化,`merge()`方法也会将其变为持久化状态。另外,`persist()`方法常用于新对象的...

    学生成绩管理系统(Servlet+JPA)

    通过JPA的注解,如`@Entity`、`@Table`、`@Id`等,将这些类映射到数据库中的表。 接下来,我们需要一个`EntityManager`来管理这些实体,它可以创建、查询和更新数据库中的记录。在Servlet中,我们可以通过`...

Global site tag (gtag.js) - Google Analytics