1

我在应用程序中使用 Spring 数据/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 的方法。

4

1 回答 1

0

我最终解决这个问题的方式如下(感谢克里斯的评论):

@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”的要求是允许在未设置城市或街道时进行匹配。

于 2013-11-06T20:48:50.617 回答