具有延迟集合的OpenJPA获取实体

时间:2017-08-14 10:54:59

标签: java spring jpa spring-data-jpa

我有两个实体:

答:

class A {

 @Id
 Long id;

 @OneToMany(fetch = FetchType.LAZY)
 List<B> listOfB;
}

和B级:

class B {

 @Id
 Long id;

 @ManyToOne(fetch = FetchType.LAZY)
 A a;
}

现在在我的spring数据库中,我正在创建一个类似的查询:

@Query("SELECT a FROM A a INNER JOIN a.listOfB b WHERE b.id = :id")

问题是,执行查询并返回一些A对象,但是当我想访问listOfB时,我得到NullPointerException ...

A a = aRepository.findByOwnQuery(id);
a.getListOfB().size(); -> NullPointerException

1 个答案:

答案 0 :(得分:-1)

NullPointerException可能是因为您在父类listOfB中抓取您的孩子A 懒惰

请尝试JOIN FETCH

@Query("SELECT a FROM A a JOIN FETCH a.listOfB b WHERE b.id = :id")