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

保存实体时JPA错误,对象引用了未保存的瞬态实例-在刷新前保存瞬态实例

澹台鸿光
2023-03-14

我有以下错误,

对象引用未保存的瞬态实例-在刷新之前保存瞬态实例:Nominee;嵌套异常是java.lang.IllegalStateException:org.hibernate.transientObjectException:对象引用未保存的瞬态实例-在刷新前保存瞬态实例:Nominee对象引用未保存的瞬态实例-在刷新前保存瞬态实例

所以在这里,当我获取employee对象时,我想要将指定对象的键作为指定名称和对象指定对象本身映射。我成功地得到了对象。

但存钱时有问题。当我保存employee对象时,它也应该保存其被提名人的详细信息。

下面是实体类Employee.java

@Entity
@Table( name = "t_employee" )
public class Employee {
    @Id
    @GeneratedValue( strategy = GenerationType.AUTO )
    private long id;
    @Column( name = "name" )
    private String name;

@ElementCollection( fetch = FetchType.LAZY )
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable( name = "ta_emp_nom", joinColumns = @JoinColumn( name = "employee" ), inverseJoinColumns = @JoinColumn( name = "nominee" ) )
    @MapKey( name = "name" )
    private Map<String, Nominee> nomineeMap;

//getters and setters

}
@Entity
@Table( name = "t_nominee" )
public class Nominee {

    @Id
    @GeneratedValue( strategy = GenerationType.AUTO )
    private long id;

    @Column( name = "name" )
    private String name;

// other fields, getters, and setter for them below
}
Employee emp = new Employee();
emp.setName("Rahul");
Map<String,Nominee> nomineeMap = new HashMap<>();
Nominee nom1 = new Nominee();
nom1.setName("nom1");
Nominee nom2 = new Nominee();
nom1.setName("nom2");
nomineeMap.put(nom1.getName(), nom1);
nomineeMap.put(nom2.getName(), nom2);
emp.setNominee(nomineeMap);
employeeRepository.save(emp); //error here while saving this emp obj

我在保存时得到上面的错误消息

共有1个答案

巫懿轩
2023-03-14

当您应该在持久性中创建记录时,您可能正在更新该记录,因为它是新的。因此,使用实体管理器持久化对象及其所有外键。

 类似资料:
  • 对象引用未保存的瞬态实例 - 在刷新错误之前保存瞬态实例 我有 3 个实体。我将使用一对多关系映射彼此实体。 产品收费详情有 燃料类型有 计算类型具有 我有一个问题,当我保存产品时,它抛出这样一个错误。我试着用@ManyToOne(cascade = CascadeType。ALL)到productChargeDetail,但是当我保存一个产品时,它显示一个来自应用程序的错误复制错误。FuelTy

  • 对象引用未保存的临时实例-在刷新之前保存临时实例。 我有一个2类组织实体和应用实体。组织和应用程序有多对多的关系。 组织实体 申请实体有 组织运作impl。JAVA 我的问题是,我是否使用applicationRepository保存applicationEntity。save(applicationEntity)也会像我的cascade类型一样保存组织。所有的一切都在现场定义。我犯了这个错误。

  • 我有两个例子。一个是项目,一个是模块。< code >一对多关系。 我将模块设置到项目中。然后使用。第一次,因为数据库中没有记录,所以项目和模块可以保存到数据库中。然而,第二次,因为我不需要创建新项目,我只创建新模块,然后将模块设置回项目。 发生异常。 对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。 有什么办法可以解决这个问题吗谢谢

  • 上图显示了表之间的关系。 AddressType表包含静态值,如mailing、home、work等。 在AddressTypeRel模型类中,我有一个带有多对一注释的AddressType对象

  • 我正在使用Seam Framework。我有2个实体: Request.java 和请求事件.java 当我进行此交易时: 我得到了这个错误:

  • 错误: 我还尝试了,但是 病因是什么?显然,我设置了nullable=true(在数据库中也是如此),尽管我有这个错误。有什么想法吗?