【发布时间】:2016-02-03 23:11:11
【问题描述】:
当我尝试创建注释记录时出现此错误。
org.hibernate.TransientObjectException: 对象引用了一个未保存的对象 瞬态实例 - 在刷新之前保存瞬态实例
注解实体
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?
【问题讨论】:
-
我也遇到过类似的问题,完全按照他的做法解决了:mkyong.com/hibernate/…