我在应用程序中使用 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 link 来构建查询(尽管我不确定如何获取 Spring 托管实体管理器),但这似乎打破了使用纯 Spring 的方法。
最佳答案
我最终解决这个问题的方式如下(感谢克里斯的评论):
@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”的要求是允许在未设置城市或街道时进行匹配。
关于java - 如何构造@Query选择其中@Param是一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19779059/