POST 时传递的分离实体持续存在
Posted
技术标签:
【中文标题】POST 时传递的分离实体持续存在【英文标题】:Detached entity passed to persist when POST 【发布时间】: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() 方法 【参考方案1】:从关系中删除 cascade = CascadeType.ALL JPA @ManyToOne with CascadeType.ALL
【讨论】:
【参考方案2】:这与 POST 无关。
它是一个休眠异常,异常的原因是您尝试持久化的实体对象未处于持久化状态。
Spring JPA -> 请检查启用的事务管理器 持久性 JPA 配置文件。交易方式应该是 用@Transactional 表示法标记。
-
确保您没有分配在 PersistenceContext 中已存在的其他实体中已经存在/使用的相同 id(主键)。
【讨论】:
以上是关于POST 时传递的分离实体持续存在的主要内容,如果未能解决你的问题,请参考以下文章