Java org.postgresql.util.PSQLException:错误:WHERE的参数必须是布尔类型,而不是类型字符
我试图在SpringBoot中直接使用URL中指定的参数执行查询。 前。。。 在SpringBoot中,我将替换并形成一个PostgreSQL查询 那样Java org.postgresql.util.PSQLException:错误:WHERE的参数必须是布尔类型,而不是类型字符,java,spring,postgresql,spring-boot,jpa,Java,Spring,Postgresql,Spring Boot,Jpa,我试图在SpringBoot中直接使用URL中指定的参数执行查询。 前。。。 在SpringBoot中,我将替换并形成一个PostgreSQL查询 那样 private List<Users> findByQuery(String query) { return entityManager .createNativeQuery("SELECT * FROM public.user where ? ", Users.class) .s
private List<Users> findByQuery(String query) {
return entityManager
.createNativeQuery("SELECT * FROM public.user where ? ", Users.class)
.setParameter(1, query)
.getResultList();
}
SELECT * FROM public.user where username='test' AND City='london'
它基本上是实现服务器端过滤器,我们有6或7个
但我一直有以下错误
2018-08-29 10:55:45.832警告54751-[nio-8080-exec-1]o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:0,SQLState:42804
2018-08-29 10:55:45.833错误54751-[nio-8080-exec-1]o.h.engine.jdbc.spi.SqlExceptionHelper:错误:WHERE的参数必须是布尔类型,而不是类型字符变化
职位:48
2018-08-29 10:55:45.849错误54751-[nio-8080-exec-1]o.a.c.c.c.[/].[dispatcherServlet]:路径[]上下文中Servlet[dispatcherServlet]的Servlet.service引发异常[请求处理失败;嵌套异常为javax.persistence.PersistenceException:org.hibernate.exception.sqlgrammareException:无法提取结果集]根本原因
org.postgresql.util.PSQLException:错误:WHERE的参数必须是布尔类型,而不是类型字符
职位:48
where子句中缺少字段名 改变
SELECT * FROM public.user where ?
到
我在这里找到了解决办法
final String jpql = "SELECT * FROM user where " + filter;
return entityManager
.createNativeQuery(jpql, User.class)
.getResultList();
查询必须是布尔值。它看起来不是。@BillyFrost,但当我硬编码时它工作正常..比如..SELECT*FROM public.user where username='test'..但当..SELECT*FROM public.user where?.时它会给我错误。你确定可以将where条件作为参数插入吗?当你必须直接插入sin时,会使用setParametergle值,如:SELECT*…WHERE NAME=?'@Innet它应该能够接受..如WHERE采用字符串条件查找某些内容I无法硬编码字段变量名称它需要来自url,因此需要动态形成查询..如在url中前端传递任何筛选器,并在co的WHERE子句中使用urlurse据我所知,整理完后,我认为动态where子句不允许这样做。用户名后应该有=等号。我可能会过滤并生成字符串过滤器。所以这不应该是个问题
final String jpql = "SELECT * FROM user where " + filter;
return entityManager
.createNativeQuery(jpql, User.class)
.getResultList();