Java 如何构造@Query选择@Param是对象的位置

Java 如何构造@Query选择@Param是对象的位置,java,eclipselink,spring-data,Java,Eclipselink,Spring Data,我正在应用程序中使用SpringData/Eclipse链接。我了解如何构建一个简单的查询,如下所示: @Query("SELECT l FROM Location l WHERE l.street = :street") public Location findByLocation(@Param("street") String street); 我所困惑的是如何构建更复杂的表单查询。以下原因导致编译错误: @Query("SELECT l FROM Location l WHERE l.s

我正在应用程序中使用SpringData/Eclipse链接。我了解如何构建一个简单的查询,如下所示:

@Query("SELECT l FROM Location l WHERE l.street = :street")
public Location findByLocation(@Param("street") String street);
我所困惑的是如何构建更复杂的表单查询。以下原因导致编译错误:

@Query("SELECT l FROM Location l WHERE l.street = :location.street AND l.city=location.city")
public Location findByLocation(@Param("location") Location location);

我想这真的是一个例子?我知道我可以直接使用eclipse链接来构建查询,尽管我不确定如何获得Spring托管实体管理器,但这似乎打破了使用纯Spring的方法。

由于Chris的评论,我最终解决了这一问题的方法如下:

@Query("SELECT l FROM Location l "WHERE (l.street IS NULL OR l.street = :street) AND (l.city IS NULL OR l.city= :city) ")
public Location findByLocation(@Param("street") String street, @Param("city") City city);

IS NULL的要求是允许在未设置城市或街道时进行匹配。

为什么不直接传入location.street和location.city值,而不是location实体,因为我认为Spring不知道如何为查询提取这些值。