JPA将“true”替换为1

时间:2012-08-29 13:52:50

标签: spring-data-jpa

我使用Spring Data JPA和hibernate作为持久性提供程序。 PostgreSQL 9.1.5是我的数据库。

查询:

@Query("select COUNT(u) from User u where u.enabled=true")

自动翻译为

select count(user0_.username) as col_0_0_ from users user0_ where user0_.enabled=1

正如您所见,“true”被“1”取代。 Postgre不接受此查询并抛出错误:

 org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select count(user0_.username) as col_0_0_ from users user0_ where user0_.enabled=1]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query] with root cause

无需替换的查询工作正常。在pgadmin查询界面中,以下查询有效。

select count(user0_.username) as col_0_0_ from users user0_ where user0_.enabled=true

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

确保在JPA提供程序中使用正确的数据库方言。例如。在Hibernate中它应该是:

org.hibernate.dialect.PostgreSQLDialect