2015-11-03 34 views
1

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

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?

+0

我有类似的问题,按照他做了什么来解决: http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/ – OPK

回答

0

我改变

实例

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

@Column(name="id_user") 
    private Long idUser; 

解决了这个问题,但我认为这种方式是一种错误的