Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate查询-类似用户名,具有多个输入_Java_Hibernate_Spring Data Jpa - Fatal编程技术网

Java Hibernate查询-类似用户名,具有多个输入

Java Hibernate查询-类似用户名,具有多个输入,java,hibernate,spring-data-jpa,Java,Hibernate,Spring Data Jpa,我试图通过标准获取用户,但得到如下错误 String value = criteria.get("username"); builder.append(TABLE_ALIAS).append("username").append(" like ") .append(ANY).append("('{").append(value).append("}'::text[])") 错误: java.lang.IllegalArgument

我试图通过标准获取用户,但得到如下错误

String value = criteria.get("username");
                builder.append(TABLE_ALIAS).append("username").append(" like ")
                .append(ANY).append("('{").append(value).append("}'::text[])")
错误:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: '{test%,testuser6,%ana%}' near line 1, column 108 [

SELECT jpauser FROM com.abc.domain.jpa.JpaUser jpauser WHERE  jpauser.username like  ANY('{test%,testuser6,%ana%}'::text[]) limit 100]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
代码:

构造如下所示的标准

String value = criteria.get("username");
                builder.append(TABLE_ALIAS).append("username").append(" like ")
                .append(ANY).append("('{").append(value).append("}'::text[])")

有人能帮上忙吗?如何使用like和多个输入执行hibernate查询?

使用
createNativeQuery
进行本机查询

Query query = getEntityManager()
                .createNativeQuery("SELECT jpauser FROM JpaUser jpauser WHERE " + criteria);

在本机查询中,需要使用本机SQL语句:

Query query = getEntityManager()
            .createNativeQuery("SELECT * FROM users jpauser WHERE " + criteria)

感谢您的快速回复,但在我更改为“createNativeQuery”后出现以下错误:org.hibernate.exception.sqlgrammareexception:无法在org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)处准备语句在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)的org.hibernate.exception.internal.StandardSQLExceptionConverter.converter(StandardSQLExceptionConverter.java:42)中,您是否可以添加有问题的完整堆栈跟踪,似乎您的SQL语法错误,请再次检查,并分享您是如何准备标准的。添加在我是如何准备标准的上面。。。。。得到如下错误。。。。。。原因:org.h2.jdbc.JdbcSQLException:未找到函数“ANY”;SQL语句:在org.h2.message.DbException.getJdbcSQLException(DbException.java:345)上,从用户jpauser中选择jpauser,其中jpauser.username像任何(“{test%,testuser6,%ana%}”):text[])limit 100[90022-191]Jdbc找不到您的
PSQL函数
添加属性文件您是否使用了正确的配置并在问题中添加了配置,同时检查您使用的PSQL方言是否支持db当前版本设置错误,如下所示。。。。。。原因:org.h2.jdbc.JdbcSQLException:未找到函数“ANY”;SQL语句:在org.h2.message.DbException.getJdbcSQLException(DbException.java:345)上,从用户jpauser中选择*,其中jpauser.username像任何(“{test%,testuser6,%ana%}”):text[]限制100[90022-191]。这是错误的。我假设您希望在PostgresSQL上运行此查询。
Query query = getEntityManager()
            .createNativeQuery("SELECT * FROM users jpauser WHERE " + criteria)