【问题标题】:Detached entity passed to persist when POSTPOST 时传递的分离实体持续存在
【发布时间】:2016-06-27 02:33:32
【问题描述】:

正如我在这个问题中所述,我正在尝试在两个表之间添加连接:Adding table joins to existing project causes infinite recursion

但是现在我收到了一个新错误:

detached entity passed to persist: sample.todosapp.spring.domain.User] with root cause

当我尝试调用此代码时(这是在我的 REST 控制器中修改后的 POST 方法):

    @RequestMapping(method = POST)
@ResponseStatus(HttpStatus.CREATED)
public Callable<Todo> post(@RequestBody Todo todo) {
    User u = userService.findBySso(SecurityContextHolder.getContext().getAuthentication().getName());

    todo.setUser(u);
    return () -> todoRepository.save(todo);
}

如何在 POST 期间添加连接?

【问题讨论】:

  • 我不完全理解 post 和 join 之间的问题(这是两个完全不同的概念),但是对于您的错误,您需要使用 saveOrUpdate() 方法

标签: java mysql spring hibernate rest


【解决方案1】:

从关系中删除 cascade = CascadeType.ALL JPA @ManyToOne with CascadeType.ALL

【讨论】:

    【解决方案2】:

    这与 POST 无关。

    它是一个休眠异常,异常的原因是您尝试持久化的实体对象未处于持久化状态。

    1. Spring JPA -> 请检查启用的事务管理器 持久性 JPA 配置文件。交易方式应该是 用@Transactional 表示法标记。

      1. 确保您没有分配在 PersistenceContext 中已存在的其他实体中已经存在/使用的相同 id(主键)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-22
      • 2016-10-29
      • 2021-01-03
      • 1970-01-01
      • 2015-02-24
      • 2016-11-25
      相关资源
      最近更新 更多