Spring boot Spring使用save更新所有实体

Spring boot Spring使用save更新所有实体,spring-boot,hibernate,jpa,repository,Spring Boot,Hibernate,Jpa,Repository,各位早上好,, 我试图通过其id完全更新实体,我使用的是一个从JPA扩展而来的存储库,我认为只要让它保存系统,它就会粉碎旧的系统,但事实并非如此,我得到了以下错误: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) 我已经尝试使用entityManager.flush();但我有一个

各位早上好,, 我试图通过其id完全更新实体,我使用的是一个从JPA扩展而来的存储库,我认为只要让它保存系统,它就会粉碎旧的系统,但事实并非如此,我得到了以下错误:

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
我已经尝试使用entityManager.flush();但我有一个错误:

javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call
我已经找到了更新数据库字段的选项,但我真正想要的是完全粉碎数据库行,有那么复杂吗?我该怎么做?我应该删除记录并重新创建它吗?(我不相信,因为我们正在生成两个过渡,但我不知道这是否正常)

我将负责修改实体的代码放入:

 @PostMapping ("/ user")
    public ResponseEntity postUser (@RequestBody User user) {
        Map <Object, Object> model = new HashMap <> ();
        entityManager.flush ();
        User newUSer = userRepository.saveAndFlush (user);
        model.put ("user", newUSer);
        return ok (model);
    }
@PostMapping(“/user”)
公共响应姿态(@RequestBody User){
Map model=newhashmap();
entityManager.flush();
User newUSer=userRepository.saveAndFlush(用户);
model.put(“用户”,newUSer);
返回ok(型号);
}

谢谢大家!

好的,在一些测试帐户之后,我找到了如何使其正确工作的方法,我做了一些错误的事情,因为当我编写此代码时,我得到了正确的结果:

@PostMapping ("/ user")
    public ResponseEntity postUser (@RequestBody User user) {

        Map <Object, Object> model = new HashMap <> ();

        AtomicReference <ResponseEntity> responseEntity = new AtomicReference <> ();
        Optional <User> optionalUser = Optional.of (userRepository.findById (user.getId ()). Get ());

        OptionalConsumer.of (optionalUser) .ifPresent (u -> {
            u.setPassword (user.getPassword ());
            userRepository.save (u);
            model.put ("user", u);
            responseEntity.set (ok (model));
        }). ifNotPresent (() -> responseEntity.set (notFound (). build ()));

        return responseEntity.get ();
    }
@PostMapping(“/user”)
公共响应姿态(@RequestBody User){
Map model=newhashmap();
AtomicReference responseEntity=新的AtomicReference();
Optional optionalUser=Optional.of(userRepository.findById(user.getId()).Get());
OptionalConsumer.of(optionalUser).如果存在(u->{
u、 setPassword(user.getPassword());
userRepository.save(u);
model.put(“用户”,u);
responseEntity.set(正常(模型));
}).ifNotPresent(()->responseEntity.set(notFound().build());
returnresponseEntity.get();
}
所以我要做的是在用户模型中创建一个merge方法来修改参数传递的数据并正确保存(我有更好的方法,可能有更多推荐的方法,请告诉我!)