Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有相同标识符值的不同对象已与会话关联(双向多对一关联)_Java_Spring_Oracle_Hibernate_Jpa - Fatal编程技术网

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 ;