java - 如何构造@Query选择其中@Param是一个对象

标签 java eclipselink spring-data

我在应用程序中使用 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/

相关文章:

java - 管理数据库中的历史记录

Java (J2ME) 将图像转换为 byte[],然后返回图像

java - 无法使用 Hibernate 删除具有@OneToMany 关系的父 JPA 实体

java - JPQL 新对象实例化

hibernate - JPA 创建 @ManyToMany 表名不是由 'type_type' 而是由 'type_varname'

spring-boot - eclipse中的Spring data Querydsl不生成查询类型类

java - 哪些 java 映射库可以从 Map<String, Object> 映射到 pojo/bean?

java - Eclipse:构造函数未定义

java - Google App Engine - 如何将对象返回到我的 servlet?

spring - 自定义或提供提示以允许 Spring MongoTemplate 使用 final 成员反序列化对象