2012-08-29 64 views
2

我將Spring Data JPA與hibernate用作持久性提供程序。 PostgreSQL 9.1.5是我的數據庫。JPA將「true」替換爲1

查詢:

@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 

正如你所看到的 「真」 由 「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 

我該如何解決這個問題?

+2

您使用哪個持久性提供程序(Hibernate?EclipseLink?OpenJPA?)以及如何爲User.enabled映射?您的ORM配置中是否設置了適當的數據庫方言? –

+0

我用ProgressDialect而不是PostgreSQLDialect。感謝提示。 – Mariusz

回答

1

確保在您的JPA提供程序中使用正確的數據庫方言。例如。在休眠應該是:

org.hibernate.dialect.PostgreSQLDialect 
相關問題