0

我对推土机映射有疑问。问题是我应该将集合从我的实体映射到我的 DTO。

实体中的集合:

private List<Devis> devises = new ArrayList<Devis>(0);

@OneToMany(fetch = FetchType.LAZY, mappedBy = "idDemande")
public List<Devis> getDevises() {
    return this.devises;
}

public void setDevises(List<Devis> devises) {
    this.devises = devises;
}

在 DTO 中:

private List<DevisDto> devises = new ArrayList<DevisDto>();

public List<DevisDto> getDevises() {
    return devises;
}

public void setDevises(List<DevisDto> devises) {
    this.devises = devises;
}

错误 :

org.hibernate.LazyInitializationException: illegal access to loading collection
MapId: null
Type: null
Source parent class: com.bnpparibas.realestate.workflowtma.entity.Devis
Source field name: lignes
Source field type: class org.hibernate.collection.internal.PersistentBag
Source field value: Unable to determine source field value
Dest parent class: com.bnpparibas.realestate.workflowtma.dto.DevisDto
Dest field name: lignes
Dest field type: java.util.List
4

2 回答 2

0

您可能在 Hibernate 会话关闭后进行映射。保持打开状态,或设置FetchTypeEAGER

于 2013-10-17T09:36:53.683 回答
0

如果您没有使用 FetchType 到 EAGER,那么您必须创建一个新服务,该服务在这里调用一个新的 Dao 类,您使用 Criteria 或任何其他语言进行查询,一旦您获得 Devis 列表然后映射到 Dto 类,但使用 mapCollection()由您在此方法中设计,您可以将实体映射到 dto 并返回 dto 列表。你没有得到结果,因为你将 List 映射到 Class 这就是你得到错误的原因。如果你没有得到然后给我留下评论,我会通过代码解释。如果你在这里给出一些代码。

于 2014-05-01T10:20:24.863 回答