grails - 如何将列表作为参数添加到grails中的sqlQuery?

标签 grails groovy

我正在编写一个查询并想设置一个字符串列表的参数。

我的查询是

def strQuery = """SELECT * from user u where u.status in (?)"""

def session = sessionFactory.getCurrentSession()

def resultList = session.createSQLQuery(strQuery)
        .setParameter(0, UserStatus.List)
        .list();

在哪里
public enum UserStatus {
    ACTIVE("Active"),
    ARCHIVE("Archived"),

    public static final List<UserStatus> List = [ACTIVE,ARCHIVED]

}

但我遇到了一个异常(exception)
ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: operator does not exist: character varying = bytea
  Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

最佳答案

要绑定(bind)列表,您必须使用 setParameterList带命名参数。
setParameter仅适用于单个值。

def strQuery = """SELECT * from user u where u.status in (:statusList)"""

def session = sessionFactory.getCurrentSession()

def resultList = session.createSQLQuery(strQuery)
    .setParameterList('statusList', UserStatus.List)
    .list();

关于grails - 如何将列表作为参数添加到grails中的sqlQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669695/

相关文章:

grails - 在Grails中保存关联的域类

grails - `getPersistentValue` 应该用于集合吗?

security - Grails,从 Acegi 升级到 Spring 安全插件

java - Groovy 1.6 和 1.8 之间的区别

Java Akka 调度 API 抛出 MissingMethodException

grails - 使用Spock进行集成测试

grails - 有没有一种方法可以过滤静态支架的list方法的结果?

angular - 如何在有 Angular 项目中将GrailsApplicationCommand与Gradle包装器一起使用?

intellij-idea - 如何在gradle.build中调试空指针异常

java - groovy 脚本可以继承自 Java 或 Groovy 父类(super class)吗?