当前位置: 首页 > 知识库问答 >
问题:

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

向锦
2023-03-14

我正在使用Hibernate 4.2.6、JSF2(Mojarra 2.1.13)和Tomcat 7.0.34来开发我的Web应用程序。我试图使用Hibernate注释定义两个类之间的OneToOne关系。我认为我做错了什么,因为我得到了一个ORA-02291异常:完整性约束(PER_VPT_F01)被违反-父密钥未找到。我花了将近8个小时试图找到错误在哪里,但没有任何成功。拜托,有人能看看这个代码,告诉我我是否犯了任何错误(四只眼睛可以看到两个以上)。

首先是我的家长课:

@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

提前谢谢。

共有1个答案

徐俊楚
2023-03-14

将注释标记为回答,因为它解决了OP的问题

禁用与表关联的所有触发器。这应该工作正常。通常它发生与触发器,它尝试另一个插入/更新

 类似资料:
  • 问题内容: 我有两个表:“电影”和“用户”。两者之间存在n:m关系,描述用户观看过哪些电影。这用表格“ seen”描述。现在,我想为给定的用户找出他尚未看过的所有电影。我当前的解决方案是这样的: 这可以正常工作,但扩展性似乎不太好。有更好的方法吗? 问题答案: 这是不使用您显示的子查询方法来执行此查询的典型方法。这可以满足@Godeke的要求,以查看基于联接的解决方案。 但是,在大多数品牌的数据库

  • 我是spring界的新手,我正在研究如何将Hibernate和spring框架集成在一起 我对Hibernate注释和JPA注释之间的关系做了一些研究。 我有类似以下实体类的东西: 我不理解的是Hibernate注释和JPA注释之间的关系是什么 前面示例中使用的注释@Entity、@Table(Name=“Person”)、@GeneratedValue(Strategy=GenerationTy

  • 问题内容: 我一直在为我班的编程工作。我正在使用NetBeans。我完成了项目,效果很好。当我尝试运行它时,出现一条消息“找不到主类”。这是一些主要的代码: 我之前发布了此内容,但遇到了一些问题。我已经固定了其他人,现在只剩下这一个了。任何建议将不胜感激。 问题答案: 在项目浏览器中右键单击您的项目 点击属性 点击运行 确保您的主类是您想要成为切入点的主类。(确保使用完全限定的名称,即mypack

  • 我一直在做编程课的作业。我正在使用NetBeans。我完成了我的项目,它工作得很好。当我尝试运行它时,我收到一条消息,上面写着“找不到主类”。下面是一些主要的代码: 我以前发过这个,但有几个问题。我已经修好了其他的,现在只剩下这一个了。任何建议都将不胜感激。

  • 本文向大家介绍在C ++中找到相关系数的程序,包括了在C ++中找到相关系数的程序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个找到相关系数的程序。 为此,我们将提供两个数组。我们的任务是找到表示给定值之间关系强度的相关系数。 示例 输出结果

  • 仅产生以下消息: 找不到主类net.sf.saxon.查询 我已经在其他线程中读到这是撒克逊语中 XQuery 模式的正确命令,所以我还能做错什么?