Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 在OneTONE与Hibernate的关系中找不到主键_Java_Oracle_Hibernate - Fatal编程技术网

Java 在OneTONE与Hibernate的关系中找不到主键

Java 在OneTONE与Hibernate的关系中找不到主键,java,oracle,hibernate,Java,Oracle,Hibernate,我正在使用Hibernate4.2.6、JSF2(Mojarra2.1.13)和Tomcat7.0.34来开发我的web应用程序。我试图使用Hibernate注释在两个类之间定义一个OneToOne关系。我认为我做错了什么,因为我得到了一个ORA-02291异常:违反了完整性约束(PER_VPT_F01)-未找到父密钥。 我花了将近8个小时的时间试图找到bug的位置,但没有成功。请有人看一下这个代码,告诉我我是否犯了什么错误(四只眼睛可以看到多于两只眼睛) 首先是我的家长课: @Entity @

我正在使用Hibernate4.2.6、JSF2(Mojarra2.1.13)和Tomcat7.0.34来开发我的web应用程序。我试图使用Hibernate注释在两个类之间定义一个OneToOne关系。我认为我做错了什么,因为我得到了一个ORA-02291异常:违反了完整性约束(PER_VPT_F01)-未找到父密钥。 我花了将近8个小时的时间试图找到bug的位置,但没有成功。请有人看一下这个代码,告诉我我是否犯了什么错误(四只眼睛可以看到多于两只眼睛)

首先是我的家长课:

@Entity
@Table(name = "GEN_MIEMBROS")
public class Miembro implements Serializable, Comparable {

    @Id
    @SequenceGenerator(name = "seq", sequenceName = "GEN_SEQ")
    @GeneratedValue(generator = "seq")
    @Column(name = "ID_MIEMBRO")
    private long idMiembro;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CODIGO")
    private Lista lista;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "detail")
    private Vpt vpt;

    // more fields definitions 
    // Constructors and getters & setters
}
现在,儿童班:

@Entity
@Table(name = "PER_VPT")
public class Vpt implements Serializable {

    @Id
    @Column(name = "ID_VPT")
    @GenericGenerator(name = "generator", strategy = "foreign", parameters =    @Parameter(name = "property", value = "detail"))
    @GeneratedValue(generator = "generator")
    private long idVpt;

    @OneToOne
    @PrimaryKeyJoinColumn
    private Miembro detail;   

    // more fields definitions 
    // Constructors and getters & setters
}
我必须说,当我尝试插入新的子行时,父行已经存在。事实上,我从父表中获取子表的ID。问题是,当我尝试提交插入操作时,我得到了一个ORA-02291异常。如下图所示,saveOrUpdate()操作在前面设置idVpt字段的值

还有一件事。引发异常的约束如下所示:

CONSTRAINT PER_VPT_F01 
FOREIGN KEY (ID_VPT) 
REFERENCES GEN_MIEMBROS (ID_MIEMBRO) ON DELETE CASCADE

提前感谢。

将评论标记为答案,因为它解决了OP的问题


禁用与表关联的所有触发器。这应该行得通。通常它发生在触发器上,它尝试另一次插入/更新

该表上是否有关联的触发器??您只能以新名称创建这些表,并单独测试代码以进行标识。是的,有:-(我忘了检查它。现在,我已禁用触发器,提交工作正常。感谢您的帮助。请将您的提示作为答案写下来,以便我可以投票表决。