首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring使用保存更新所有实体

Spring使用保存更新所有实体
EN

Stack Overflow用户
提问于 2020-11-07 23:50:42
回答 1查看 25关注 0票数 0

大家早上好,我正在尝试完全通过它的id来更新一个实体,我正在使用一个从JPA扩展而来的存储库,我认为只要让它保存系统,就会摧毁旧的系统,但事实并非如此,我得到了这个错误:

代码语言:javascript
运行
复制
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)

我尝试使用entityManager.flush ();但得到一个错误:

代码语言:javascript
运行
复制
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call

我已经找到了更新数据库字段的选项,但我真正想要的是完全压缩数据库行,有那么复杂吗?我怎么发动汽车呢?我应该删除记录并重新创建它吗?(我不相信,因为我们正在生成两个转换,但我不知道它是否正常)

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

代码语言:javascript
运行
复制
 @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);
    }

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-08 00:46:39

好了,在一些测试帐户之后,我发现了如何让它正确工作,我做了一些错误的事情,因为当我编写这段代码时,我得到了正确的代码:

代码语言:javascript
运行
复制
@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 ();
    }

所以我要做的是在用户模型中创建一个merge方法来修改通过参数传递的数据并正确地保存它(我对更好的方法持开放态度,可能会有更多推荐的方法,请告诉我!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64729543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档