Java 具有相同标识符值的不同对象已与会话关联(双向多对一关联)
我已经有这个问题好几天了,我已经尝试了所有的解决方法。所以我在这里请求更多的帮助。 我有一个父类和一个子类以双向方式连接。随函附上代码:Java 具有相同标识符值的不同对象已与会话关联(双向多对一关联),java,spring,oracle,hibernate,jpa,Java,Spring,Oracle,Hibernate,Jpa,我已经有这个问题好几天了,我已经尝试了所有的解决方法。所以我在这里请求更多的帮助。 我有一个父类和一个子类以双向方式连接。随函附上代码: @Entity @Table(name="PARENT") public class Parent implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID") @Genera
@Entity
@Table(name="PARENT")
public class Parent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PARENT_SEQ")
@SequenceGenerator(name="PARENT_ID_GENERATOR", allocationSize = 1, sequenceName="PARENT_SEQ")
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy="parent", cascade = CascadeType.ALL)
private List<Child> childList;
//getter and setter ......
当我这样做的时候:
@Autowired
ParentService parentService;
......
Parent parent = new Parent();
//various parent setters
List<Child> childList= new ArrayList<Child>();
for (Employee employee: listEmployee.getEmployee()) {
Child child = new Child();
child.setNome(employee.getNome());
childList.add(child)
}
parent.setChildList(childList)
parentService.save(parent);
这是我的服务:
@Autowired
ParentRepository parentRepository;
.......
@Transactional
public void save(Parent parent) {
parentRepository.save(parent);
}
这听起来像是一个级联问题,但如果我用MERGE进行更改,我的父母会救我,但不会救我的孩子
这是我的序列,两者相同,仅更改名称:
CREATE SEQUENCE "CHILD_SEQ" MINVALUE 1 MAXVALUE 1000000000000000000000000000 INCREMENT BY 1 START WITH 41 CACHE 20 NOORDER NOCYCLE ;
感谢任何能帮助我的人。
您是否尝试将< <代码>子>父/代码>属性设置为<代码>父< /代码>实体?是的,我尝试,但通常不工作,当我用ID加载实体时,我会被这个错误所捕获,并且在同一个事务中,我试图用相同的ID保存另一个实体。加载实体A
,克隆它,然后再次尝试保存它。
@Autowired
ParentRepository parentRepository;
.......
@Transactional
public void save(Parent parent) {
parentRepository.save(parent);
}
CREATE SEQUENCE "CHILD_SEQ" MINVALUE 1 MAXVALUE 1000000000000000000000000000 INCREMENT BY 1 START WITH 41 CACHE 20 NOORDER NOCYCLE ;