Spring Data JPA - 将列名称和值作为参数传递

Jaa*_*aan 6 hibernate jpql oracle11g spring-data-jpa spring-boot

我只是想知道如何将列名及其值传递给 Spring Data JPA 中的 @Query 注释。

基本上列名称将是静态的,我们过去常常将每一列作为实体类中的元素。但在这里我想要一些不同的东西,这里的列名称将是动态的,我将这个值作为参数传递给存储库中定义的方法。

表格- 日历

- id、PersonName、1、2、3......31

上面是表结构,1,2,3,.....31 是代表日历日的列名称,我们在这些列中有值。我正在使用 Spring Data JPA 从数据库获取数据。在这里我只想获取特定日期的人名。下面给出了存储库中定义的函数。

@Query("select c from Calendar c where :calendarDay=:value")
List<Calendar> getPersonName(@Param("calendarDay") String calendarDay, @Param("value") String value);
Run Code Online (Sandbox Code Playgroud)

这对我不起作用。任何帮助,将不胜感激。

Ily*_*sev 7

Spring JPA 支持的唯一动态参数是#{#entityName}。不支持注释中的动态列名称@Query。,这就是您想要实现的目标。

您唯一的选择是使用 QueryDSL、规范或 Criteria API 手动构建查询,或者简单地构建查询字符串并将其传递到 EntityManager。无论如何,您都必须为此编写代码。

例如,参见: