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

无法执行语句。对@OneToOne JPA映射执行保存操作时

呼延河
2023-03-14

我得到了"org.springframework.dao.数据完整性违反异常:无法执行语句;SQL[n/a];约束[null];嵌套异常是org.hibernate.exception.约束违反异常:无法执行语句"异常,同时将对象保存到存储库。

要求:计划将只有一个Cpricing对象,因此我添加了@OneToOne映射。下面是预期的表结构。

Plan table
-------------
id | planname

Cpricing table
----------
id | cdata | plan_id(fk)
    

我在实体类中有以下代码更改:

Plan {
    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pl")//created one to one mapping between the cPricing
    private CPricing priceInfo;
}
    
CPricing {       
    @OneToOne(fetch = FetchType.LAZY) //created one to one mapping between the plan
    @JoinColumn(name = "plan_id", nullable = false, unique = true)
    private Plan pl;
}

当试图保存包含CPricing对象的计划对象时,会引发异常。

映射正确吗?

共有1个答案

阳念
2023-03-14

在这里,您将@JoinColumn放在CPricing一侧,因此CPricing是关系的所有者,您还应该在数据库中保存对象时为CPricing设置计划。您应该执行类似于Cpricing的操作。保存前设置PL(计划)

 类似资料:
  • 问题内容: 我在Hibernate尝试了简单的程序,并发现了一堆异常。 我不知道到底是什么问题。 我有三个课程-书籍,阅读器和使用。最后一个是将前两个绑定为一对多。 这是我的: 这是异常消息: 的摘要: DB上的所有表均已创建,但为空。一切都还好。有什么建议么? 如何解决这个麻烦? 问题答案: 在MySQL中, USING 是保留字。 因此,只需使用实体上的注释来重命名表即可。就像是 我假设您有一

  • 我得到以下错误,当我尝试添加一个应用程序和应用程序设置。以下是详细的错误消息: 下面是junit测试 这是保存应用程序和设置的方法 这些是DAO类。 这是应用刀 为什么我会得到上面的错误?如果你们需要更多的信息,请告诉我。 更新

  • 我的意图是对进行简单的克隆,但在此之前,我在修改列表时遇到了一个问题。在列表中添加另一个元素 为什么?

  • 问题内容: 仓库程序 JDBC程序 在执行上述程序时,程序出错。 Eroor: 问题答案: 设计用于与返回游标(通常是查询)的sql语句一起使用。您的调用不会返回游标,因此不适合与此方法一起使用。您应该只使用,然后从输出参数获取值:

  • 问题内容: 有一个对话列表,每个对话都有一个消息列表。每个消息都有一个不同的字段和一个字段。我们需要考虑的是,在对话的第一条消息中使用了动作,在几条消息中使用了动作之后,过了一会儿,依此类推(有一个聊天机器人意图列表)。 将对话的消息动作分组将类似于: 问题: 我需要使用ElasticSearch创建一个报告,该报告将返回每次会话的;接下来,我需要对类似的东西进行分组并添加一个计数;最终将导致as