2009-04-14 15 views
3

Compte tenu de la classe mise en veille prolongée cartographié:opérateurs mathématiques dans les requêtes Critères

@Entity 
public class MyTestClass { 
    /* id and stuff */ 

    private Integer aValue; 
    private Integer bValue; 
} 

vous pouvez effectuer les opérations suivantes HQL:

Query query 
    = getCurrentSession().createQuery("select aValue * bValue from MyTestClass"); 
List<Double> resultList = query.list; 

et obtenir le résultat du calcul sur.

Est-il possible de faire quelque chose de similaire avec l'API Criteria? Je n'ai toujours pas trouvé un moyen d'utiliser les opérations mathématiques avec l'API Criteria. Nous avons des fonctions agrégées comme sum, avg et ainsi de suite, mais pas les opérateurs mathématiques de base?

Répondre

5

Vous pouvez faire une nouvelle propriété dans votre classe qui est cette valeur calculée. Spécifiez simplement l'attribut de formule pour cette propriété. Vous pouvez ensuite inclure cette propriété dans vos critères.

<property name="product" formula="aValue*bValue" /> 

formule (facultatif): expression SQL qui définit la valeur d'une propriété calculée. Les propriétés calculées ne possèdent pas de mappage de colonnes.

1

vous pouvez toujours ajouter comme sql Je pense qu'il y avait une certaine sqlProjection/méthode sqlRestriction

Questions connexes