2014-10-20 88 views
0

我已經使用spring,spring數據和mysql.I有PersonEntityEmailEntity。他們之間有OneToMany關係,即一個人有很多電子郵件。沒有獲取OneToMany關係中的所有實體

Person實體

@Entity 
@Table(name = "person") 
public class PersonEntity 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "personid") 
    private Long id; 

    @OneToMany(fetch = FetchType.EAGER, cascade = javax.persistence.CascadeType.ALL, mappedBy = "id") 
    private List<EmailEntity> emails; 
} 

電子郵件實體

@Entity 
@Table(name = "email") 
public class EmailEntity 
{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "emailid") 
    private Long id; 

    @ManyToOne 
    @JoinColumn(name = "personid") 
    private PersonEntity personEntity; 
} 

我用彈簧數據

PersonEntity personEntity = personDAO.findOne(id); 

我有一個人在數據庫中的多個電子郵件獲取Person數據。 當我調試代碼時,PersonEntity只包含一個EmailEntity,但列表中有兩個以上的EmailEntities。

哪裏出問題了? 如果錯了,請讓我糾正?

+1

'mappedBy'應鏈接到持有關係背面的屬性。在你的情況下,可能是'personEntity',而不是'id'。 – 2014-10-20 16:27:00

+0

啊!謝謝;) – 2014-10-20 17:20:03

+0

修復這個小錯誤解決了你的問題?如果是這樣,我會將其作爲實際答案發布。 – 2014-10-20 21:35:33

回答

2

Annotation parameter mappedBy應該鏈接到持有關係反面的屬性。在你的情況是personEntity,而不是id

@OneToMany(fetch=FetchType.EAGER, cascade=javax.persistence.CascadeType.ALL, mappedBy="personEntity") 
private List<EmailEntity> emails; 

什麼在你的配置可能已經發生的是,該郵件是通過匹配他們的idid或你的人獲取。

相關問題