【发布时间】:2016-02-23 19:12:23
【问题描述】:
我有三个具有嵌套关系的类:
public class Route {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToMany(cascade = {CascadeType.DETACH, CascadeType.REFRESH}, fetch = FetchType.EAGER)
private List<Place> places;
}
public class Place {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(cascade = {CascadeType.DETACH, CascadeType.REFRESH, CascadeType.REMOVE}, mappedBy = "place")
private List<Image> images;
}
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(cascade = {CascadeType.REFRESH, CascadeType.DETACH})
private Place place;
}
我需要通过路由 ID 获取可分页的图像列表。
这是我的疑问:
@Repository
public interface ImageRepository extends CrudRepository<Image, Long> {
@Query("select place.images from Place place where place.id in (select placeD.id from Place placeD where placeD in (select route.places from Route route where route.id = :routeId)) ")
Page<List> findAllByRouteId(@Param("routeId") Long routeId, Pageable Page);
}
我尝试了不同的组合,但仍然没有结果。 我是 HQL 的新手,阅读了很多教程,据我所知,它要求我像现在一样编写一个连接的查询。
但它不起作用。 它抛出的错误:
InvalidDataAccessResourceUsageException: could not prepare statement
我该如何解决?或者至少我应该去哪里挖?
【问题讨论】:
标签: java mysql spring hibernate hql