相关疑难解决方法(0)

将IN子句列表添加到JPA查询中

我已经构建了一个看起来像这样的NamedQuery:

@NamedQuery(name = "EventLog.viewDatesInclude",
        query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
        + "el.timeMark <= :dateTo AND "
        + "el.name IN (:inclList)")
Run Code Online (Sandbox Code Playgroud)

我想要做的是填写参数:inclList与项目列表而不是一个项目.例如,如果我有一个new List<String>() { "a", "b", "c" }如何在:inclList参数中得到它?它只允许我编纂一个字符串.例如:

setParameter("inclList", "a") // works

setParameter("inclList", "a, b") // does not work

setParameter("inclList", "'a', 'b'") // does not work

setParameter("inclList", list) // throws an exception
Run Code Online (Sandbox Code Playgroud)

我知道我可以构建一个字符串并从中构建整个Query,但我想避免开销.有没有更好的方法呢?

相关问题:如果List非常大,有没有什么好的方法来构建这样的查询?

java jpa jpql

116
推荐指数
4
解决办法
23万
查看次数

HQL或Java持久性查询语言中的IN子句

我有以下参数化的JPA或Hibernate查询:

SELECT entity FROM Entity entity WHERE name IN (?)
Run Code Online (Sandbox Code Playgroud)

我想将参数作为ArrayList <String>传递,这可能吗?Hibernate电流告诉我,那

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

解答:作为参数的集合仅适用于像" :name" 这样的命名参数,而不适用于像" ?" 这样的JDBC样式参数.

java hibernate jpa hql jpql

75
推荐指数
3
解决办法
13万
查看次数

我可以从JPA查询对象中获取SQL字符串吗?

我可以知道如何从JPA查询中获取sql吗?或者说,将JPA查询转换为SQL字符串?非常感谢你!

sql jpa

17
推荐指数
3
解决办法
3万
查看次数

如何使用spring数据jpa查询jsonb列?

我在使用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指定值.

我在方法调用之前直接记录了参数,并且它们都是提供的.

我不确定为什么在日志中#>>显示?.我需要逃脱 …

postgresql spring jpa spring-data-jpa

4
推荐指数
3
解决办法
1万
查看次数

标签 统计

jpa ×4

java ×2

jpql ×2

hibernate ×1

hql ×1

postgresql ×1

spring ×1

spring-data-jpa ×1

sql ×1