2010-12-14 4 views
2

Je suis en train d'écrire une requête SQL personnalisée dans le portail liferay. Ce qui suit est la requête.Liferay personnalisé SQL requête avec la date

SELECT sum(score) as total FROM ratingsentry r WHERE r.modifiedDate>?; 

La fonction util est la suivante.

String sql = CustomSQLUtil.get("GET_TODAY_COUNT");    
SQLQuery q = dbSession.createSQLQuery(sql); 
QueryPos qPos = QueryPos.getInstance(q);   

Calendar cal = Calendar.getInstance(); 
cal.setTime(new Date()); 
cal.add(Calendar.DATE, -1);    
java.sql.Timestamp timestamp = CalendarUtil.getTimestamp(cal.getTime());  
qPos.add(timestamp); 

q.addScalar("total", Type.LONG);         
Object count=q.uniqueResult(); 

De la méthode util ci-dessus, te nombre est toujours retourné comme 0.

Toute aide est grandement appréciée.

+0

Quelle est la valeur de l'horodatage? –

+0

Ma compréhension est que Liferay utilise MySQL. que se passe-t-il lorsque vous utilisez quelque chose comme MySQL workbench pour exécuter SELECT somme (score) comme total FROM ratingsentry r WHERE r.modifiedDate> '1/1/2010'' –

+0

Non, Liferay est essentiellement agnostique de base de données et utilise Hibernate sous les couvertures, mais il dispose d'un code personnalisé pour plusieurs bases de données (par exemple DB2 et Oracle) pour appliquer un comportement cohérent. Il utilise HSQL out of the box mais vous avertit de ne pas l'utiliser en production. –

Répondre

0

Essayez ceci:

Timestamp timestamp = new Timestamp(cal.getTimeInMillis());