当我尝试创建注释记录时出现此错误。
org.hibernate.TransientObjectException:object引用未保存的 瞬态实例 - 在刷新之前保存瞬态实例
注释实体
public class Annotation implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "id_user")
private User profile;
@Column
@Temporal(TemporalType.DATE)
private Date date;
@Column
private String name;
@Column
private String description;
// Only getters and setters
}
用户实体
@Entity
@Table
@Component
public class User implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column
private String email;
@Column
private String username;
@Column
private String password;
@Column(nullable = false,columnDefinition = "int default 1")
@Enumerated(EnumType.ORDINAL)
private UserRole role = UserRole.ROLE_USER;
@Column
private Boolean enabled = Boolean.TRUE;
}
我知道为了避免这个错误我必须使用 CascadeType.ALL 但之后出现另一个问题:当我尝试创建注释记录时,自动创建不应该的用户记录。
如何在新注释记录中添加id_profile?
答案 0 :(得分:0)
我通过更改
解决了这个问题@Column(name="id_user")
private Long idUser;
的实例
@ManyToOne
@JoinColumn(name = "id_user")
private User profile;
但我认为这种方式是错误的