@OneToOne отношения спящий вопрос - PullRequest
0 голосов
/ 07 апреля 2011

Я работаю в проекте, использующем Hibernate + JPA.У меня есть класс Entity:

    @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" вставляются, даже если они связаны с пользователем, у которого уже есть адрес электронной почты, зарегистрированный в базе данных.

Что я делаю неправильно ??

Спасибозаранее!

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Решено.Я неверно истолковал отношение @OneToOne.Теперь investorProfile и AccountingDetails содержат один ключ для одного пользователя, и все готово.

0 голосов
/ 07 апреля 2011

установите для свойства hibernate hibernate.show_sql значение true и посмотрите, какие операторы SQL генерируются.Также проверьте, выполняете ли вы постоянство транзакции.

...