13

残りのアプリケーションでは、jpa でスプリング ブートを使用します。

私はクラスの下宿人を持っています

誰が持っている

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger")
private List<Reference> referenceList;

私のクラスリファレンスでは、私は持っています

@ManyToOne
@JoinColumn(name = "lodgerId")
private Lodger lodger;

このメソッドを呼び出すと

@RequestMapping(value = "/lodgers/{lodgerId}", method = RequestMethod.GET)
public Lodger getLogderById(@PathVariable("lodgerId") long lodgerId) {
    return lodgerService.getLodger(lodgerId);
}

このエラーが発生します

org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError) (through reference chain: server.bean.Lodger["referenceList"]->org.hibernate.collection.internal.PersistentBag[0]->server.bean.Reference["lodger"]->server.bean.Lodger["referenceList"]->org.hibernate.collection.internal.PersistentBag[0]->server.bean.Reference["lodger"]->server.bean.Lodger["referenceList"]...
4

7 に答える 7

2

REST Web サービス経由で循環依存関係を持つエンティティを返さない - 新しい DTO クラスを作成し、データベースから取得したエンティティをマップし、それを Web サービスで返します。

詳細はこちら: http://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application

もちろん、別のマッピング ライブラリを使用することもできますが、私の個人的なお気に入りは Orika ( http://orika-mapper.github.io/orika-docs/intro.html )です。

于 2016-06-28T07:49:53.237 に答える