我在使用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”字段。
我在做什么错?
在此先感谢!
我坚持通过EntityManager,是的,我坚持交易。在persist()期间捕获PersistenceException时,是否必须回滚事务? – 2011-04-07 14:46:17