不获取OneToMany关系中的所有实体

时间:2014-10-20 16:04:25

标签: spring spring-data

我使用过spring,spring数据和mysql。我有PersonEntityEmailEntity。他们之间存在OneToMany关系,即一个人有很多电子邮件。

人员实体

@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;
}

我使用弹簧数据

获取了Person数据
PersonEntity personEntity = personDAO.findOne(id);

我在数据库中有一个人的电子邮件。 当我调试代码时,PersonEntity只包含一个EmailEntity,尽管列表中有两个以上的EmailEntities。

哪里出错了? 如果错了请让我纠正?

1 个答案:

答案 0 :(得分:2)

Annotation parameter mappedBy应链接到保持关系反面的属性。在你的情况下是personEntity,而不是id

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

您的配置中可能发生的事情是,通过将idid或您的人匹配来获取电子邮件。