2017-03-22 11 views
5

का उपयोग कर यह प्रश्न संभव है प्रश्न यह प्रश्न सरल है कि यह प्रश्न मानदंड या डिटेक्टेड क्राइटरिया का उपयोग करके हाइबरनेट में किया जा सकता है? मुझे लगता है कि नहीं, लेकिन मैं यह सवाल करना चाहता था शायद एक कामकाज मौजूद हो।क्या यह प्रश्न मानदंड या DetachedCriteria Hibernate

SELECT 
    COLUMNS 
FROM table 
WHERE id not in (
    SELECT * FROM (
     SELECT id 
     FROM table 
     WHERE 
     SOMECONDITIONS 
     ORDER BY timestamp desc limit 0, 15 
) 
    as t); 

मैं @Dean क्लार्क द्वारा जवाब के रूप में सही का प्रतीक होगा लेकिन एक और सवाल उठता है निम्नलिखित

where can i find the findByCriteria from SessionFactory we are not using Spring 
है

उत्तर

6

तरह से मेल खाने के लिए आप क्वेरी, तुम सच में 2 चरणों के साथ यह सब करने की ज़रूरत है, लेकिन मैं 'd से बचने के इस यदि संभव हो तो:

final Criteria innerCriteria = getSession().createCriteria(YourEntity.class); 
// SOME CONDITIONS 
innerCriteria.add(Restrictions.eq("someColumn", "someValue")); 
innerCriteria.addOrder(Order.desc("timestamp")); 
innerCriteria.setMaxResults(15); 
innerCriteria.setProjection(Projections.id()); 
List<YourIdClass> ids = innerCriteria.list(); 


final Criteria criteria = getSession().createCriteria(YourEntity.class); 
criteria.add(Restrictions.not(Restrictions.in("id", ids))); 
List<YourEntity> results = criteria.list(); 

वस्तुओं आप की पहचान की कोशिश कर रहे एक ही "SOMECONDITIONS" है? यदि हां, तो यह कार्यात्मक हासिल करेगी आप जो खोज रहे हैं:

final DetachedCriteria criteria = DetachedCriteria.forClass(YourEntity.class); 
// SOME CONDITIONS 
criteria.add(Restrictions.eq("someColumn", "someValue")); 
criteria.addOrder(Order.desc("timestamp")); 
getHibernateTemplate().findByCriteria(criteria, 16, 9999999); 
+0

मैं कहाँ findByCriteria SessionFactory से हम वसंत उपयोग नहीं कर रहे पा सकते हैं – chiperortiz

संबंधित मुद्दे