Spring Data JPA支持使用规范计算实体.但它有没有办法使用方法名称解析来计算实体?假设我想要一种方法countByName来计算具有特定名称的实体,就像findByName获取具有特定名称的所有实体的方法一样.
如何限制JPQL命名查询的选择查询?我需要在查询级别本身而不是在java层中完成限制!我正在尝试使用
@NamedQueries(value = {
@NamedQuery(name = UserNotification.QueryName.NOTIFICATION_DISPLAYED,
query = "SELECT un FROM UserNotification un " +
"WHERE un.orgId IN (:orgList) " +
"AND un.user.id = :userId LIMIT 5")
Run Code Online (Sandbox Code Playgroud)
但是徒劳!
请建议
当我们使用spring boot和spring数据时,如何访问存储库中的实体管理器?
否则,我需要将我的大查询放在注释中,我宁愿有一些清楚的东西......然后是长文本.
我只是想知道如何将列名及其值传递给 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)
这对我不起作用。任何帮助,将不胜感激。
我在使用postgres 9.4实例获取此本机查询时遇到问题.
我的存储库有一个方法:
@Query(value = "SELECT t.* " +
"FROM my_table t " +
"WHERE t.field_1 = ?1 " +
"AND t.field_2 = 1 " +
"AND t.field_3 IN ?2 " +
"AND t.jsonb_field #>> '{key,subkey}' = ?3",
nativeQuery = true)
List<Entity> getEntities(String field1Value,
Collection<Integer> field3Values,
String jsonbFieldValue);
Run Code Online (Sandbox Code Playgroud)
但是日志显示了这个:
SELECT t.* FROM my_table t
WHERE t.field_1 = ?1
AND t.field_2 = 1
AND t.field_3 IN ?2
AND t.jsonb_field ? '{key,subkey}' = ?3
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
内部异常:org.postgresql.util.PSQLException:没有为参数2指定值.
我在方法调用之前直接记录了参数,并且它们都是提供的.
我不确定为什么在日志中#>>显示?.我需要逃脱 …
java ×2
jpql ×2
spring ×2
spring-boot ×2
hibernate ×1
jpa ×1
jpa-2.0 ×1
limit ×1
oracle11g ×1
postgresql ×1
spring-data ×1