Spring Data - Spring Repository:为类属性选择不同的值

时间:2015-06-11 09:17:42

标签: java spring jpa

我有以下

@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的名称约定来获得相同的结果?

感谢。

1 个答案:

答案 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