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)