gpt4 book ai didi

java - 在与 Hibernate 的 OneToOne 关系中找不到主键

转载 作者:行者123 更新时间:2023-11-30 11:23:57 25 4
gpt4 key购买 nike

我正在使用 Hibernate 4.2.6、JSF2 (Mojarra 2.1.13) 和 Tomcat 7.0.34 来开发我的网络应用程序。我正在尝试使用 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
}

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

enter image description here

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

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

提前致谢。

最佳答案

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

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

关于java - 在与 Hibernate 的 OneToOne 关系中找不到主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20904715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com