代码之家  ›  专栏  ›  技术社区  ›  Mohammad Karmi

Spring-JPA保存瞬态实体

  •  1
  • Mohammad Karmi  · 技术社区  · 6 年前

    persist

    如果实体已分离,则 merge 将返回托管实体,但我传递的实体仍将分离。

    User transientUser=new User();
        transientUser.setId(9L);
        User managedTransientUser=userRepository.save(transientUser);
    

    如果我手动设置Id(即使删除自动生成),我传递的实体(transientUser)仍将处于非托管状态。如果我使用generationidentity,那么返回的实体和传递的实体是相同的(id为null,DB将自动递增),这是预期的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   JB Nizet    6 年前

    persist() . 你在打电话吗 userRepository.save()

    这个方法测试实体是否是新的(通过检查它是否已经有一个ID)。如果是,它会打电话 持久化() merge() 合并() .