我使用过spring,spring数据和mysql。我有PersonEntity
和EmailEntity
。他们之间存在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。
哪里出错了? 如果错了请让我纠正?
答案 0 :(得分:2)
Annotation parameter mappedBy
应链接到保持关系反面的属性。在你的情况下是personEntity
,而不是id
。
@OneToMany(fetch=FetchType.EAGER, cascade=javax.persistence.CascadeType.ALL, mappedBy="personEntity")
private List<EmailEntity> emails;
您的配置中可能发生的事情是,通过将id
与id
或您的人匹配来获取电子邮件。