Messieurs Dames, bonjour
Excusez tout d'abord si je poste pas au bon endroit, mais j'ai pas vu d'emplacement dédié à NHibernate...
Je suis actuellement confronté à un souci majeur (et je ne parle pas du doigt) qui peux se résumer à :
"Comment intégrer une clause GROUP BY sur un champ calculé dans un DAO géré par NHibernate tout en gardant une compatibilité avec toutes les BdD (sqlserver, oracle...), c'est-à-dire sans faire de SQL ?"
Pour me faire comprendre (si c'est pas déjà le cas), un petit extrait de notre DAO :
A la base, j'ai ça :
Sachant que la propriété DateP contient date et heure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /// <summary> /// Retourne une liste de trucs /// </summary> /// <param name="properties">criteres de recherche</param> /// <returns>liste d'objets contenant les trucs</returns> public IList<object> getListeTrucs(IList<KeyValuePair<string, object>> properties) { ICriteria criteria = getCriteria(properties); criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Property("CodeTruc")) .Add(Projections.Property("DateP")) return criteria.List<object>(); }
Mais, comme je suis chiant, je veux faire un group by sur la date sans l'heure (ça fait moins d'enregistrements pour le dataset balancé à Crystal, derrière).
Mon champ n'est donc plus le champ de la base, mais un cast ou un truc du genre. Notez que ça pourrait être une opération plus complexe, ça doit rien changer à la solution du problème.
Si on ajoute un Projection.GroupProperty sur le cast de DateP, il gueule parce qu'il l'a pas dans ses group by, il a que DateP...
Si quelqu'un a une solution, ça éviterait deux ou trois suicides dans la boite
Merci bien et bonne journée-nuit-après midi-soirée (rayer les mentions inutiles) à vous.
Partager