如何修复 TransientPropertyValueException:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例

问题描述

当我尝试更新时出现此错误:TransientPropertyValueException:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。我如何知道此错误与 Cascade 类型有关,但我无法解决此问题。 add方法也报错,我在StudentEntity类中将Cascade类型改为Merge,问题就解决了。

  @Entity
    @Table(name = "teacher")
    public class TeacherEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;

    @ManyToMany(cascade = {
            CascadeType.PERSIST,CascadeType.MERGE
    })
    @JoinTable(name = "student_teacher",joinColumns = @JoinColumn(name = "teacher_id"),inverseJoinColumns = @JoinColumn(name = "student_id")
    )}



 @Entity
    @Table(name = "student")
    public class StudentEntity {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        private String name;
        private String surname;
        private Integer age;
        private BigDecimal scholarship;
    
        @ManyToMany(fetch = FetchType.EAGER,cascade = {
                CascadeType.MERGE
        })
        @JoinTable(name = "student_teacher",joinColumns = @JoinColumn(name = "student_id"),inverseJoinColumns = @JoinColumn(name = "teacher_id")
        )
        List<TeacherEntity> teacherList;
    
        @ManyToOne
        @JoinColumn(name = "school_id")
        private SchoolEntity school;}




@Entity
@Table(name = "school")
public class SchoolEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;

    @OnetoMany
    private List<StudentEntity> studentList;

    @OnetoOne(mappedBy = "school",cascade = CascadeType.ALL)
    private SchoolAddressEntity address;}



@Entity
@Table(name = "school_address")
public class SchoolAddressEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;

    @OnetoOne
    @JoinColumn(name = "school_id")
    private SchoolEntity school;}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)