2011-06-15 3 views
4

j'ajouter une formule à un champ:requête de construction Hibernate @Formula mal

@Formula(value = "(select count(*) from approvalGroup as a where a.isAccounting=true)") 

Mais la requête est d'échouer parce que Hibernate essaie de faire « vrai » un champ sur mon objet.
Exception:

[ERROR] Unknown column 'approvalgr0_.true' in 'where clause' 

Comment puis-je savoir ce Hibernate est une valeur constante et pas quelque chose dont il a besoin pour récupérer de l'objet entité?

Répondre

10

Josh, les formules Hibernate sont appliquées comme SQL natif (pas HQL) et probablement le dialecte SQL de votre SGBD n'a pas vrai mot-clé. Essayez de modifier le code comme suit

@Formula(value = "(select count(*) from approvalGroup as a where a.isAccounting)") 

Utilisez également les noms de colonne DB au lieu d'utiliser les noms des propriétés d'entité persistantes.

+0

Merci pour la réponse. Je viens de découvrir que @Formula (value = "(select count (*) from approvalGroup comme où a.isAccounting = 1)") fonctionne aussi bien. En outre, j'utilise les noms de colonnes sql et db. – Josh

+1

Mais ne pensez-vous pas que "= 1" est redondant? – Trader001

+0

@ Trader001 Non si le type de colonne autorise également d'autres valeurs. –