【发布时间】:2017-12-01 11:17:57
【问题描述】:
我发现了一些非常奇怪的东西。当我使用注释时
@OneToMany(fetch = FetchType.EAGER, mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval = true)
List<LeaveQuery> leaveQueryList;
和
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "FK_account", nullable = true)
private Account account;
我不再能够从数据库中删除 LeaveQuery。当我将任一侧的 FetchType.EAGER 更改为 LAZY 时,它会成功删除,但我需要双方都使用 FetchType.EAGER。
有人有解决办法吗?
问候
编辑:
这是我的删除代码:
public ResponseEntity<?> delete(@PathVariable long custId) {
log.info("entering deleteleaverequest");
LeaveQuery deleteLeaveQuery = leaveQueryRepository.findOne(custId);
log.info("condition" + deleteLeaveQuery.getStatus().equals("Onbehandeld"));
if (!deleteLeaveQuery.getStatus().equals("Onbehandeld"))
return ResponseEntity.badRequest().build();
leaveQueryRepository.delete(deleteLeaveQuery);
accountService.sendLeaveRequestCanceledNotification(deleteLeaveQuery);
return ResponseEntity.ok().build();
}
【问题讨论】:
-
如何删除?抛出任何错误? p.s.急切是非收集的默认值
-
没有任何错误。但是,当我创建自定义删除方法时,会抛出一个奇怪的 Transastionrequired 错误,我已在此线程中对此进行了详细说明。 stackoverflow.com/questions/47549043/… 但是当我使用 jparepository 的常规内置删除功能时,它不会抛出任何错误
-
是的,把这段代码放在你做删除的地方
-
我想它是用@Transactional 注释的吧?
-
不,它不是,使用弹簧数据它不需要使用@Transactional
标签: java hibernate spring-data