我有两个域类 City 和 School 以及 OneToMany。
@Entity
public class City {
...
@OneToMany(mappedBy="city")
private Set<School> schools = new HashSet<>();
...
}
@Entity
public class School {
...
@ManyToOne
private City city;
...
}
对应的存储库是:
@Repository
public interface CityRepository extends JpaRepository<City, Long>{
}
@Repository
public interface SchoolRepository extends JpaRepository<School, Long> {
}
在 CityController 的方法中:
@GetMapping(....)
public ResponseEntity<City> getSchool(@PathVariable Long id) {
City city = cityRepository.findOne(id);
return ResponseUtil.wrapOrNotFound(Optional.ofNullable(city));
}
当我调试以检查城市对象的学校成员时,出现异常: 无法计算表达式方法抛出“org.hibernate.LazyInitializationException”异常。
不知道为什么,我只想获取该城市的所有学校(但不想在域类中添加一些注释,我更喜欢在@Repository中实现它,更好地使用@Query) 。感谢您的帮助。
最佳答案
在 Hibernate 中,默认情况下所有关系都有 FetchType.LAZY。您需要将其设置为渴望获得城市。
@ManyToOne(fetch = FetchType.EAGER)
private City city;
关于java - 如何在@Query注释中获取特定城市及其所有相关学校,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614764/