【发布时间】:2017-04-04 13:32:51
【问题描述】:
我可以一辈子不去想这个。
我们使用 Intellij 生成标准实体对象。 我现在正在尝试保存父子关系。
我有 2 个表,event_person_register 和 event_user_role。这是我尝试过的。
eventPersonRegister.setEventUserRolesByPersonRegisterId(new ArrayList<>());
EventUserRole eventUserRole = new EventUserRole();
eventUserRole.setEventPersonRegisterByUserRoleLinkPersonId(eventPersonRegister);
eventUserRole.setUserRole("ROLE_USER");
eventPersonRegister.getEventUserRolesByPersonRegisterId().add(eventUserRole);
eventPersonRegisterRepository.save(eventPersonRegister);
只有父记录保存到数据库中,子记录不保存。 我没有在 OneToMany 注释上放置任何 Cascade 或 fetch 类型。一个注册人可以有多个角色。
更新 1:
我从 eventPersonRegister 实体尝试了以下操作:
@OneToMany(fetch=FetchType.LAZY, mappedBy = "eventPersonRegisterByUserRoleLinkPersonId", cascade=CascadeType.ALL)
但得到错误:
MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails
如果我从 user_role 端尝试,那么我不会收到任何错误,但只有父母被保存,而不是孩子。
【问题讨论】:
-
您实际上回答了这个问题:“我没有在 OneToMany 注释上放置任何 Cascade 或 fetch 类型。” :)
标签: hibernate jpa save entity parent-child