【问题标题】:Primary key not found in OneToOne relationship with Hibernate在与 Hibernate 的 OneToOne 关系中找不到主键
【发布时间】:2014-01-21 04:27:34
【问题描述】:

我正在使用 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

提前致谢。

【问题讨论】:

  • 该表上是否有关联的触发器?您只能以新名称创建这些表并单独测试您的代码以识别。
  • 是的,有 :-( 我忘记检查了。现在,我禁用了触发器,提交工作完美。感谢您的帮助。写下您的提示作为答案,以便我可以投票吧。

标签: java oracle hibernate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2012-06-03
    相关资源
    最近更新 更多