2012-08-29 2 views
2

J'utilise Spring Data JPA avec Hibernate comme fournisseur de persistance. PostgreSQL 9.1.5 est ma base de données.JPA remplace "true" par 1

Requête:

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

se traduit automatiquement

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

Comme vous pouvez le voir "true" est remplacé par "1". Postgre does't accepter cette requête et l'erreur est lancée:

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 

requêtes sans remplacement fonctionne très bien. Dans l'interface de requête pgadmin, la requête suivante fonctionne.

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

Comment puis-je résoudre ce problème?

+2

Quelle persistance fournisseur que vous utilisez (Hibernate EclipseLink OpenJPA??) et comment est-mapping pour 'User.enabled' ressembler? Avez-vous un bon dialecte de base de données dans votre configuration ORM? –

+0

J'ai utilisé ProgressDialect au lieu de PostgreSQLDialect. Merci pour l'indice. – Mariusz

Répondre

1

Assurez-vous que vous utilisez un dialecte de base de données correct dans votre fournisseur JPA. Par exemple. en veille prolongée, il devrait être:

org.hibernate.dialect.PostgreSQLDialect 
Questions connexes