Hallo!
ich müsste folgende HQL Statement in Criteria überführen, um die Abfragen dynamisch zu halten:
Code:
SELECT concentration, amount FROM
(SELECT concentration, count(concentration) as amount FROM
(SELECT distinct concentration, experiment_fk FROM `cellassay`.`caresult` where experiment_fk =1 or experiment_fk = 3) as a
GROUP BY concentration) as b
WHERE amount = 2;
Dabei wollte ich experiment_fk =1 or experiment_fk = 3 or..... dynamisch erzeugen, da ein ganzer Array an Restriktionen ausgewählt werden muss.
Mein bisheriger code setzt die innerste Klammer um:
Code:
Criteria crit = session.createCriteria(CAResult.class);
String s = filterCriterias.get("id_experiment");
String[] st= s.split(" ");
Criterion c = Restrictions.eq("id", new Long(st[0]));
int amountExpIds=0;
for(String id : st){
c = Restrictions.or(c, Restrictions.eq("id", new Long(id)));
amountExpIds++;
}
crit.createCriteria("experiment").add(c);
crit.setProjection(Projections.distinct(Projections.projectionList()
.add(Projections.property("concentration").as("concF"))
.add(Projections.property("experiment").as("expeF"))));
Allerdings scheitere an allem weiteren. Sollte ich die innere Klammer in einem DetachedCrtieria darstellen und diese dann als Subquery benutzen?! Wie?
Bin da etwas verzweifelt, aber vielleicht kann mir jemand weiter helfen.
Vielen Dank schon mal!
MP