java - 在Spring Data JPA中获取列的所有记录,即使我们将其指定为参数

标签 java mysql database spring spring-data-jpa

有一个名为 zipcode 的表,其中列为 id, zip, city, state

在我们的例子中,我们希望根据 idzipcitystate 获取记录>.

一般的SQL查询看起来像

SELECT * FROM zipcode WHERE id=id AND zip=zip AND city=city AND state=state;

如果我们想要获得一个特定的状态,我们将用给定的名称替换状态值。

SELECT * FROM zipcode WHERE id=id AND zip=zip AND city=city AND state='California';

如果我们想要一个特定的城市,那么我们可以这样写

SELECT * FROM zipcode WHERE id=id AND zip=zip AND city='Los Angles' AND state=state;

Spring Data JPA 的问题是,如果我们写一个方法

@Query(value = "SELECT * FROM zipcode WHERE id=?1 AND zip=?2 AND city=?3 AND state=?4", nativeQuery = true)
List<Zipcode> getZipCodes(Integer id, Integer zip, String city, String state)

我只想获取除特定州之外的所有城市,那么我不能使用这种方法,就像我如何使用上面的 SQL 查询一样,我们只需要替换列值。

我们如何在 Spring Data JPA 中使用 native 查询来实现这一点?

最佳答案

使用spring data jpa查询参数

@Query(value = "SELECT * FROM zipcode WHERE id=:id AND (zip=:zip or :zip is null) AND  (city=:city or :city is null)  AND (state=:state or :state is null) ", nativeQuery = true)
List<Zipcode> getZipCodes(@Param("id") Integer id, @Param("zip") Integer zip, @Praram("city) String city, @Param("state") String state)

关于java - 在Spring Data JPA中获取列的所有记录,即使我们将其指定为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944169/

相关文章:

java - 将 Java 代码导出到 CSV 并在 Excel 2013 中导入

java - 如何在以下场景中为模型的特定字段选择自定义序列化器

php - Magento:如何将商店设置转移到默认范围?

database - symfony2 Doctrine 表锁

组合两个表的Sql查询

php - 更多的 MySql 表会减慢对 MySql 数据库的搜索吗?

java - Neo4J Java Bolt CREATE Node 很慢。如何改进?

java - 声明一个 Java 类 strictfp 是否意味着它在其他类中调用的方法也是 strictfp?

php - 具有特定条件的 LEFT JOIN

mysql - 如何使用 SQL 聚合和求和相似选择的值?