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

使用@ManyToOne和@JoinColumn保存模型时出现Hibernate异常

微生德运
2023-03-14

当我调用hibernate save时,我会面临这个异常,我不知道如何解决这个问题。在我的例子中,我将join列从PrimaryKey更改为另一列,因此我面临这个异常。我不想保存客户与承销商和我只想保存外键。

org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing

我的域模型是:

@Entity
@Table(name = "CORE_UNDERWRITER2")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UnderWriter  {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid2")
    private String id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CUSTOMER_BANK_API_ID", referencedColumnName = "BANK_API_ID")
    private Customer customer;

    .....
}
@Entity
@Table(name = "CORE_CUSTOMER")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Customer {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid2")
    private String id;

    @Column(name = "BANK_API_ID", nullable = false)
    private String bankApiId;

    ....
}

共有1个答案

薛征
2023-03-14

您可以尝试以下操作:

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "CUSTOMER_BANK_API_ID", referencedColumnName = "BANK_API_ID")
private Customer customer;

但这取决于您的应用程序需要什么。我建议进一步了解实体状态。

 类似资料:
  • 问题内容: 当我尝试保存顶级实体(使用JPA)时,我是否需要从数据库中重新获取ManyToOne映射实体并进行设置,还是不能仅设置(ManyToOne映射实体的ID并保存顶级实体?)它抛出的实体:org.hibernate.TransientObjectException: 我们正在使用的表结构: (这两个类都具有用于所有字段的setter和getter方法以及默认构造函数,该构造函数以主键作为参

  • 我在保存具有ManyToOne双向关系的实体时遇到问题,如下所示: 警告:HHH000437:试图保存一个或多个与未保存的瞬态实体具有不可为空的关联的实体。在保存这些从属实体之前,必须在操作中保存未保存的瞬态实体。未保存的临时实体:([com . epam . apartments booking . model . city # 912])依赖实体:([[com . epam . apartme

  • 我试图建立简单的一对多关系,但hibernate抛出了错误,不知道该怎么办。 类产品: 和类用户: 我遇到了错误:通过JDBC语句执行DDL“alter table products drop constraint fk_user”时出错

  • 问题内容: 我正在通过Hibernate(注释)使用Postgres,但似乎已经无法处理User对象了: 如果我手动运行SQL,则必须在表名两边加上引号,因为用户似乎是postgres关键字,但是如何说服hibernate自己做呢? 提前致谢。 问题答案: 使用保留关键字时,需要转义表名。在JPA 1.0中,没有标准化的方法,而Hibernate特定的解决方案是使用反引号: 在JPA 2.0中,标

  • 我有两个实体 实体1 实体2 我对Jpa不是很熟悉,所以如果您需要对我的问题进行任何澄清,或者您需要任何更多的信息,请告诉我。

  • 我有一个奇怪的错误:我有一个使用Hibernate的注释类。一切都很好,直到我开始这样介绍日志: 产生的错误是: [错误]原因:org。冬眠MappingException:无法确定组织的类型。slf4j。Logger,位于table:container,用于列:[org.hibernate.mapping.Column(Logger)] 根据我的理解,在这种情况下,静态场应该是合适的。那么为什么