Java 在POST时传递到持久化的分离实体
我正试图在两个表之间添加一个联接,正如我在这个问题中所述: 但是现在我发现了一个新的错误,它指出:Java 在POST时传递到持久化的分离实体,java,mysql,spring,hibernate,rest,Java,Mysql,Spring,Hibernate,Rest,我正试图在两个表之间添加一个联接,正如我在这个问题中所述: 但是现在我发现了一个新的错误,它指出: detached entity passed to persist: sample.todosapp.spring.domain.User] with root cause 当我尝试调用此代码时(这是我的REST控制器中POST的修改方法): @RequestMapping(方法=POST) @ResponseStatus(HttpStatus.CREATED) 公共可调用帖子(@Request
detached entity passed to persist: sample.todosapp.spring.domain.User] with root cause
当我尝试调用此代码时(这是我的REST控制器中POST的修改方法):
@RequestMapping(方法=POST)
@ResponseStatus(HttpStatus.CREATED)
公共可调用帖子(@RequestBody Todo Todo){
用户u=userService.findBySso(SecurityContextHolder.getContext().getAuthentication().getName());
todo.setUser(u);
return()->todoRepository.save(todo);
}
如何在POST期间添加联接?从关系中删除cascade=CascadeType.ALL
这与POST无关 这是一个hibernate异常,导致异常的原因是您试图持久化的实体对象未处于持久化状态
我并不完全理解post和join之间的问题(这是两个完全不同的概念),但是对于您的错误,您需要使用saveOrUpdate()方法
@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);
}