我有以下
@Entity
public class Restaurant{
@ManyToOne
private City c;
// more
}
@Entity
public class City{
private String name;
// more
}
我还有一个存储库
public interface RestaurantRepository extends JPARepository<Restaurant, Long> {
// something to put here
}
=== EDIT ==== 我有所有城市的列表,但只有一些城市与餐馆有关。
我需要在这样的资源库中编写一个方法来提取餐馆推荐的所有城市。
在SQL中我只会执行以下操作:
SELECT CITY.id, CITY.name FROM CITY WHERE ID NOT IN (SELECT DISTINCT(city_id) FROM RESTAURANT)
有没有办法使用http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html的名称约定来获得相同的结果?
感谢。
答案 0 :(得分:0)
由于我没有看到对Spring Data的查询创建策略文档中列出的IS [NOT] EMPTY运算符的任何支持,您可以尝试手动定义JPQL查询:
public interface CityRepository extends JPARepository<City, Long> {
@Query(value="SELECT c FROM CITY c WHERE c.restaurants IS EMPTY")
List<City> findCitiesWithNoRestaurants();
}
我猜测它将转换为您提供的本机SQL作为示例。
否则看起来您需要找到具有Restraunts的城市列表,然后将其传递给使用NotIn模式的方法。这显然不如上述那么高。
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation