jpa:如何检查实体是否持久化?

时间:2017-10-07 03:16:12

标签: jpa

JPA实体:如何检查实体是否已被持久化?

  1. 检查ID:

    实体ID可以在持久化之前由用户设置。所以它不可靠。

  2. 检查版本:

    实体不需要

    版本。

  3. em.contains(实体)

    如果实体已分离,则返回false。

2 个答案:

答案 0 :(得分:0)

您可以在使用@PostPersist注释的侦听器方法中使用记录器。检查this以获取更多信息

答案 1 :(得分:0)

JPA的save方法返回 can never null的持久化实体。

您只需null检查以查找给定实体是否保持不变。

User user = userRepository.save(new User(FIRSTNAME, LASTNAME));
if(user != null) {
    //User entity is successfully persisted.
}

来自docs

  

<S extends T> S save(S entity)

     

保存给定的实体。使用返回的实例进行进一步操作   因为保存操作可能已经更改了实体实例   完全。

     

参数:entity - 不能为null。

     

返回:保存的实体永远不会为空。