Java Hibernate。创建有错误的记录

时间:2015-11-03 17:15:11

标签: java spring hibernate

当我尝试创建注释记录时出现此错误。

  

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?

1 个答案:

答案 0 :(得分:0)

我通过更改

解决了这个问题
@Column(name="id_user")
    private Long idUser;

的实例
@ManyToOne
    @JoinColumn(name = "id_user")
    private User profile;

但我认为这种方式是错误的