如何解决如何在Hibernate中为ManyToOne引用处理分配的ID
我有两个如下所示的实体-一个带有自动生成的ID,另一个带有分配的ID。 受让人的ID是从自身请求中发送的。 而且我之间有ManyToOne关系。但是当我插入它时显示下面的错误
"org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing: com.example.entity.Task.assignee->com.example.entity.Assignee
下面是我的课程和注释
package com.example.entity;
@Data
@Entity
public class Task {
@GeneratedValue(generator = "system-uuid")
@Id
private UUID id;
private String name;
private String description;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "assignee_id")
private Assignee assignee;
}
package com.example.entity;
@Data
@Entity
public class Assignee implements Persistable<UUID> {
@Id
private UUID id;
private String name;
@OnetoMany(mappedBy = "assignee",fetch = FetchType.LAZY)
private List<Task> tasks = new ArrayList<>();
@Transient
private boolean isNew = true;
@Override
public boolean isNew() {
return isNew;
}
@PrePersist
@PostLoad
void markNotNew() {
this.isNew = false;
}
}
下面是从控制器调用的我的存储库和服务类
@Repository
public interface TaskRepository extends JpaRepository<Task,UUID> {
}
@Service
@Slf4j
public class TaskServiceImpl implements TaskService {
@Autowired
TaskRepository taskRepository;
@Override
public Task create(Task request) {
return taskRepository.save(task);
}
@Override
public Task update(Task request) {
return taskRepository.save(request);
}
}
所以当我向邮递员发送请求时-如下所示
{
"name": "test task","description": "Do this task man","assignee": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6","name": "Lucia"
}
}
所以我告诉任务-具有自动生成的ID,其中,从该API的调用者发送的受让人ID。但是我遇到了异常-当我调用存储库的保存方法时。它在抱怨要保存受让人,但是我给了Cascade.ALL 在实体的映射中。
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing: com.example.entity.Task.assignee->com.example.entity.Assignee
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。