Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
ORA-02291:违反完整性约束(GOPI.SYS_C007099)-在Hibernate中未找到父项_Hibernate_Jpa_Oracle11g_Transactions_Entitymanager - Fatal编程技术网

ORA-02291:违反完整性约束(GOPI.SYS_C007099)-在Hibernate中未找到父项

ORA-02291:违反完整性约束(GOPI.SYS_C007099)-在Hibernate中未找到父项,hibernate,jpa,oracle11g,transactions,entitymanager,Hibernate,Jpa,Oracle11g,Transactions,Entitymanager,我用MySQL在hibernate中实现了一个项目,效果很好。但是我的客户希望在Oracle11g中使用它,但是下面的代码抛出了这个错误 原因:java.sql.SQLIntegrityConstraintViolationException:ORA-02291:违反完整性约束(GOPI.SYS_C007099)-未找到父项 以下是我与@oneToMany@ManyToOne关系的代码 我有3个实体 过程 过程分析 工艺步骤 我就是这样坚持下去的 Process_Steps proSteps

我用MySQL在hibernate中实现了一个项目,效果很好。但是我的客户希望在Oracle11g中使用它,但是下面的代码抛出了这个错误

原因:java.sql.SQLIntegrityConstraintViolationException:ORA-02291:违反完整性约束(GOPI.SYS_C007099)-未找到父项

以下是我与@oneToMany@ManyToOne关系的代码

我有3个实体

  • 过程
  • 过程分析
  • 工艺步骤

  • 我就是这样坚持下去的

    Process_Steps  proSteps=new Process_Steps ();
    
            List<Process_analysis> pro_Anlist =new ArrayList<Process_analysis>();
            java.util.Date date=new java.util.Date();
    
            this.bean.setCancelled_Flg('F');
            this.bean.setUser_Id("xyz");
            this.bean.setpro_Status("xyz");
            this.bean.setPro_Description("dsfdfdfsdf");
            this.bean.setLast_Updated_Date(new Timestamp(date.getTime()));
            proService.merge(this.bean); //Persisting or merging Process Entity
    
            for(int i=0;i<3;i++){
            Process_analysis proAn=new Process_analysis();
            proAn.setCase_Protocal_Id("CASE:"+i);
            proAn.setPro(this.bean);
            proAnService.persist(proAn); //Persisting Each process analysis for Process NOTE:Throws Error Here 
            pro_Anlist.add(proAn);
            }
    
            proSteps.setRemarks("The StackOverflow");
    
            proSteps.setStart_Time(new Timestamp(date.getTime()));
            proSteps.setEnd_Time(new Timestamp(date.getTime()));
            proSteps.setPro(this.bean);           //Setting Foreign key of Process
            proStepsService.persist(proSteps);
    
            this.bean.getProAna().addAll(pro_Anlist);
            this.bean.getProSteps().add(proSteps);
            proService.merge(this.bean);`
    
    前脚
    这在MySQL中起作用的原因是您可能没有在那里定义正确的外键。@a_horse_与_no_name:P那么我们如何持久化实体的外键呢?有什么想法吗??顺便说一句,我能够持久化流程并手动插入流程分析记录……这怎么可能呢???请发布相关映射。@DraganBozanovic我添加了映射请看一看为什么要将
    @ElementCollection
    @OneToMany
    结合起来?
    Process_Steps  proSteps=new Process_Steps ();
    
            List<Process_analysis> pro_Anlist =new ArrayList<Process_analysis>();
            java.util.Date date=new java.util.Date();
    
            this.bean.setCancelled_Flg('F');
            this.bean.setUser_Id("xyz");
            this.bean.setpro_Status("xyz");
            this.bean.setPro_Description("dsfdfdfsdf");
            this.bean.setLast_Updated_Date(new Timestamp(date.getTime()));
            proService.merge(this.bean); //Persisting or merging Process Entity
    
            for(int i=0;i<3;i++){
            Process_analysis proAn=new Process_analysis();
            proAn.setCase_Protocal_Id("CASE:"+i);
            proAn.setPro(this.bean);
            proAnService.persist(proAn); //Persisting Each process analysis for Process NOTE:Throws Error Here 
            pro_Anlist.add(proAn);
            }
    
            proSteps.setRemarks("The StackOverflow");
    
            proSteps.setStart_Time(new Timestamp(date.getTime()));
            proSteps.setEnd_Time(new Timestamp(date.getTime()));
            proSteps.setPro(this.bean);           //Setting Foreign key of Process
            proStepsService.persist(proSteps);
    
            this.bean.getProAna().addAll(pro_Anlist);
            this.bean.getProSteps().add(proSteps);
            proService.merge(this.bean);`
    
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pro_que_seq")
    @SequenceGenerator(name="pro_que_seq",sequenceName="pro_que_seq")
    @Column(name="Pro_Id")
    private Long Pro_Id;
    
    
    public Long getPro_Id() {
        return Pro_Id;
    }
    public void setPro_Id(Long pro_Id) {
        Pro_Id = pro_Id;
    }
    
    
    
    @ElementCollection
    @OneToMany(cascade=CascadeType.MERGE, fetch=FetchType.EAGER,mappedBy="Pro",targetEntity=ProInSteps.class)
    private Collection<ProInSteps> ProInSteps=new LinkedHashSet<ProInSteps>();
    
    @ElementCollection
    @OneToMany(cascade=CascadeType.MERGE, fetch=FetchType.EAGER,mappedBy="Pro",targetEntity=ProAnalysis.class)
    private Collection<ProAnalysis> ProAnalysis=new LinkedHashSet<ProAnalysis>();
    
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pro_an_seq")
    @SequenceGenerator(name="pro_an_seq",sequenceName="ana_pro_seq")
    private Long Analysis_Id;
    
    @ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="Pro_Id")
    private Process Pro;
    
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="in_step_seq")
    @SequenceGenerator(name="in_step_seq",sequenceName="pro_instep_seq")
    private Long Pro_Step_Id;
    private Timestamp Start_Time;
    private Timestamp End_Time;
    
    @ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="Pro_Id")
    private Process Pro;