-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Projections (Conditional) für Spalten - Sortierung
PostPosted: Mon Jun 03, 2013 12:57 pm 
Newbie

Joined: Mon Jun 03, 2013 12:42 pm
Posts: 2
Hallo zusammen,

ich möchte in NHibernate mit ICriteria eine Sortierung mit Kriterien setzen.

Hier mal ein Beisiel einer Veranschauligung in SQL:

Code:
SELECT * FROM TestMedium WHERE Container_id = 1 AND Id IN(
       SELECT Id FROM TestMedium WHERE ExpirationByInterval = 1 AND DueDate <= GETDATE()
) OR ID IN(
       SELECT Id FROM TestMedium WHERE ExpirationByInterval = 0 AND (MaximumDays-OperationDays) <= 0
) ORDER BY
CASE WHEN TestMedium.ExpirationByInterval = 1 THEN DueDate ELSE (MaximumDays-OperationDays) END ASC


Dort selektiere ich alle "TestMedium" die die o.g. Kriterien erfüllen. Ich möchte die Ergebnisse so sortieren, dass wenn die Spalte "ExpirationByInterval" auf True ist, als Sortierkriterium die Spalte "DueDate" verwendet wird. Im anderen Fall eben "MaximumDays-OperationDays". OperationDays und MaximumDays sind vom Typ Int32 und DueDate ist vom Typ DateTime. Das o.g. SQL-Beispiel funktioniert einwandfrei.


Nachfolgend die Implentierung für ICriteria:

Code:
crit.AddOrder(Order.Asc(
     Projections.Conditional(
          Restrictions.Eq("ExpirationByInterval", true), Projections.Constant("DueDate"), Projections.Constant("(MaximumDays-OperationDays)"))
     ));


Ich habe das o.g. Beispiel getestet, leider funktioniert die Sortierung aber nicht. AUch habe ich die Typen für die Spalten mit angegeben, also z.B. "Projections.Constant("DueDate", NHibernateUtils.DateTime)" und natürlich auch für den zweiten Wert. In diesem Fall wirft er jedesmal eine Exception mit der Meldung, dass die Umwandlung ungültig sei. Ohne den Typen funktioniert es zwar, aber es gibt eine inkorrekte Sortierung. Ich vermute mal, dass man mit diesem Constant nur Werte setzen kann, oder? WEnn ja, wie kann ich es anders machen. Jemand eine Idee für mich?

Vielen Dank schonmal!

Gruß
TrAx1988


Top
 Profile  
 
 Post subject: Re: Projections (Conditional) für Spalten - Sortierung
PostPosted: Tue Jun 04, 2013 2:58 am 
Newbie

Joined: Mon Jun 03, 2013 12:42 pm
Posts: 2
Problem hat sich gelöst. Konnte es mit Projections.Property lösen und im anderen Fall in Form eines berechnenden Attributes.

Trotzdem danke.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.