保存Hibernate JPA子实体的正确方法是什么
我可以一辈子都不去想这个 我们使用Intellij生成标准实体对象。 我现在正试图挽救父子关系 我有两个表,事件\人员\注册表和事件\用户\角色。这就是我尝试过的保存Hibernate JPA子实体的正确方法是什么,hibernate,jpa,save,entity,parent-child,Hibernate,Jpa,Save,Entity,Parent Child,我可以一辈子都不去想这个 我们使用Intellij生成标准实体对象。 我现在正试图挽救父子关系 我有两个表,事件\人员\注册表和事件\用户\角色。这就是我尝试过的 eventPersonRegister.setEventUserRolesByPersonRegisterId(new ArrayList<>()); EventUserRole eventUserRole = new EventUserRole(); eventUserRole.setEventPersonRegist
eventPersonRegister.setEventUserRolesByPersonRegisterId(new ArrayList<>());
EventUserRole eventUserRole = new EventUserRole();
eventUserRole.setEventPersonRegisterByUserRoleLinkPersonId(eventPersonRegister);
eventUserRole.setUserRole("ROLE_USER");
eventPersonRegister.getEventUserRolesByPersonRegisterId().add(eventUserRole);
eventPersonRegisterRepository.save(eventPersonRegister);
但是得到错误:
MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails
如果我从用户角色端尝试,则不会得到任何错误,但只保存父级,而不保存子级 正如您所说,您可以在OneToMany侧使用cascade 如果不想使用级联,另一个选项是:
//persist eventPersonRegister
eventPersonRegister.setEventUserRolesByPersonRegisterId(new ArrayList<>());
entityManager.persist(eventPersonRegister);
//persist eventUserRole
EventUserRole eventUserRole = new EventUserRole();
eventUserRole.setUserRole("ROLE_USER");
entityManager.persist(eventUserRole);
//set the relation between eventUserRole and eventPersonRegister
eventUserRole.setEventPersonRegisterByUserRoleLinkPersonId(eventPersonRegister);
eventPersonRegister.getEventUserRolesByPersonRegisterId().add(eventUserRole);
//持久化eventPersonRegister
eventPersonRegister.setEventUserRolesByPersonRegisterId(newArrayList());
entityManager.persist(eventPersonRegister);
//持久化eventUserRole
EventUserRole EventUserRole=新的EventUserRole();
setUserRole(“角色用户”);
entityManager.persist(eventUserRole);
//设置eventUserRole和eventPersonRegister之间的关系
setEventPersonRegisterByUserRoleLinkPersonId(eventPersonRegister);
eventPersonRegister.getEventUserRolesByPersonRegisterId().add(eventUserRole);
您实际上回答了这个问题:“我没有在OneToMany注释上放置任何级联或获取类型。”:)谢谢,我完全按照上面的方法操作,它100%工作。我还遵循了其中一些非常有用的方法:
//persist eventPersonRegister
eventPersonRegister.setEventUserRolesByPersonRegisterId(new ArrayList<>());
entityManager.persist(eventPersonRegister);
//persist eventUserRole
EventUserRole eventUserRole = new EventUserRole();
eventUserRole.setUserRole("ROLE_USER");
entityManager.persist(eventUserRole);
//set the relation between eventUserRole and eventPersonRegister
eventUserRole.setEventPersonRegisterByUserRoleLinkPersonId(eventPersonRegister);
eventPersonRegister.getEventUserRolesByPersonRegisterId().add(eventUserRole);