2
私は休止状態の春休憩APIを開発しようとしています。 Googleで検索した後、遅延読み込みの解決策が見つかりませんでした。 、残りのAPIを呼び出した後春休み休止状態での遅延ロード
University.java
@Entity()
@Table(schema = "core", name = "university")
public class University extends BaseEntity {
private String uniName;
private String uniTelephon;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "university", cascade = CascadeType.ALL)
@JsonManagedReference
private List<Student> students;
//setter and getter
}
Student.java
@Entity
@Table(schema = "core",name = "student")
public class Student {
@Id
@GeneratedValue
private long id;
private String firstName;
private String lastName;
private String section;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "UNIVERSITY_ID",nullable = false)
@JsonBackReference
private University university;
// setter and getter
}
でも私の残りのエンドポイント
@GetMapping("/list")
public ResponseEntity list() throws Exception {
// I need to return just Universities But it return it eagerly with their students
return new ResponseEntity(this.universityService.findAll(), HttpStatus.OK);
}
: は、私は2つのエンティティ以下のように持っていますそれはすべての学生と大学を返します。
未取得のオブジェクトまたはコレクションをシリアル化しないようにJacksonに指示する方法がありますか?
誰かが証明されたソリューションで私を助けることができますか?その後、
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<version>${jackson.version}</version>
</dependency>
そしてWebMvcConfigurerAdapterクラスに以下を追加します(あなたは、Javaベースの構成を持っていると仮定します)::
HTTPステータス500 - コンテンツを書き込めませんでした:ロールのコレクションを遅延して初期化できませんでした:a2.asena.cashModel.University.students、プロキシを初期化できませんでした。 util.ArrayList [0] - > a2.asena.cashModel.University ["students"]);ネストされた例外はcom.fasterxml.jackson.databind.JsonMappingExceptionです:ロールのコレクションを遅延して初期化できませんでした:a2.asena.cashModel.University.students、プロキシを初期化できませんでした - セッションなし(参照チェーンを通じて:java.util.ArrayList [上記の例外ソリューションの – Generic
は、Appinitializerのフィルタオーバーライド プロテクトFilter [] getServletFilters(){ return new filter [] {new {新しいMultipartFilter()、新しいOpenEntityManagerInViewFilter()}; – Generic
いくつかの記事はそれが適切な解決策ではないと言っています – Generic