【发布时间】:2018-06-07 05:56:25
【问题描述】:
大家好,我有我的实体
@Entity
@Getter
@Setter
@EntityListeners(TaskInfoEntityListener.class)
public class TaskInfo extends Auditable {
@Id
private String taskId;
...
@OneToMany(mappedBy = "task", orphanRemoval = true, fetch = FetchType.EAGER)
private List<TaskComment> comments;
}
当我运行这段代码时
final TaskInfo taskInfo = new TaskInfo();
taskInfo.setTaskId("1234");
final TaskComment taskComment = new TaskComment();
taskComment.setComment("comment_1234");
taskInfo.setComments(Collections.singletonList(taskComment));
TaskInfo newTaskInfo = taskInfoRepository.save(taskInfo);
EntityListener 运行两次(第一次在保存 TaskInfo 时,第二次在保存 cmets 时),但我想要一次(仅第一次)。 我已经尝试了两边的 fetch 和 cascade ,但我不能让它工作。我还想在 TaskInfoEntityListener 中添加某种逻辑,以检查“cmets”字段是否更改,但我不太喜欢这种解决方案。 你有什么事吗?您有更好的方法或任何其他想法吗?
谢谢!
【问题讨论】:
标签: java jpa spring-data