2017-10-20 33 views
0

Nous n'utilisons pas l'API hibernate propriety. Nous suivons l'API standard JPA pure. Comment définir une valeur booléenne en tant que paramètre de requête JPQL? (Javax.persistenc.Query) ce qui suit ne fonctionne pasSet boolean to javax.persistenc.Query

@NamedQuery(name = "Employee.getEmployeeByState", query = "select employee.id From Employee employee where employee.state=:inputState") 


    Query getEmployeesExcluded = entityManager.createNamedQuery("Employee.getEmployeeByState"); 
    getEmployeesExcluded .setParameter("inputState", Boolean.FALSE); 
+0

quand je noyau dur la requête de son @NamedQuery de travail (name = "Employee.getEmployeeByState", requête = "select employee.id De Employé employé où employee.state = 1") – user2555212

+1

Définir "ne fonctionne pas". Précisément. –

+0

Son retournant toutes les entrées indépendamment de employee.state TRUE/FALSE – user2555212

Répondre

-1

Le problème pourrait se produire parce que dans votre entité, vous devriez avoir l'attribut state comme boolean, mais dans votre base de données, il devrait être tinyint ou int ou quelque chose comme ça (puisque nous ne savons pas votre entité je suppose que), alors vous devriez probablement utiliser un typeConverter:

@Entity 
@NamedQuery(name = "Employee.getEmployeeByState", query = "select employee.id From Employee employee where employee.state=:inputState") 
public class Employee implements Serializable { 

    @TypeConverter(name="intToBoolean", dataType=Integer.class, objectType=Boolean.class) 
    private boolean state; 

    //getters and setters 
} 

here vous pouvez trouver plus d'informations sur cette annotation.

EDIT:

Ou vous pouvez mettre en œuvre votre propre convertisseur, vérifier this, this et this

+1

Pourquoi faites-vous référence à une annotation Toplink lorsque le questionneur utilise Hibernate? –

+0

@AlanHay vous avez raison, je n'ai pas remarqué qu'il s'agissait d'une annotation Toplink ... Je viens d'éditer la réponse;) – Dazak