0

Dozer マッピングに問題があります。問題は、コレクションをエンティティから 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 to EAGER を使用していない場合は、ここで新しい Dao クラスを呼び出す新しいサービスを作成する必要があります。Devis のリストを取得したら、クエリに Criteria または他の言語を使用し、Dto クラスにマップしますが、mapCollection() を使用します。このメソッドでは、エンティティを dto にマップして dto リストを返すことができます。リストをクラスにマップしているため、結果が得られません。これがエラーが発生する理由です。わからない場合は、コメントを残してください。コードで説明します。ここにコードを入力すると。

于 2014-05-01T10:20:24.863 に答える