2011-04-07 81 views
0

我在使用Hibernate + JPA的项目中工作。我有这样的实体类:@OneToOne关系冬眠问题

@Entity 
public class CafeUser implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer userId; 
    @Column  
    private String userName; 
    @Column 
    private String userPassword; 
    @Column(unique=true) 
    private String userEmail; 
    @Column 
    private String userAddress; 
    @Column 
    private String userCountry; 
    @Column 
    private String userState; 
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime") 
    private DateTime userDateOfBirth; 
    @Column 
    private String userSex; 

    @OneToOne(cascade=CascadeType.ALL) 
    @JoinColumn(name="userAccountingDetailsId", referencedColumnName="userAccountingDetailsId") 
    private AccountingDetails accountingDetails; 

    @OneToOne(cascade=CascadeType.ALL) 
    private InvestorProfile investorProfile; 

    @OneToMany(mappedBy="user") 
    private Set<UserProfileAnswer> userProfileAnswers; 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="user") 
    private Set<MoneyHealth> userMoneyHealths; 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="user") 
    private Set<LifePlanning> lifePlannings; 

    getters-setters 
} 

如果你能看到,现场USEREMAIL被声明为唯一的,如果有CafeUser实体的一个数据库中的重复,它不插入实体。 但是,即使与已经在数据库中注册了电子邮件的用户相关联,也会插入“investorProfile”和“accountingDetails”字段。

我在做什么错?

在此先感谢!

回答

0

将hibernate属性hibernate.show_sql设置为true并查看生成的SQL语句。同时检查你是否正在执行事务中的持久性。

+1

我坚持通过EntityManager,是的,我坚持交易。在persist()期间捕获PersistenceException时,是否必须回滚事务? – 2011-04-07 14:46:17

0

已解决。我误解了@OneToOne关系。现在投资者资料和会计详细信息为一个用户保存了一个密钥,并且全部设置完成。