2008-09-12 11 views
33

मैं बॉब की सूची के बजाय उदाहरण के लिए ऑब्जेक्ट बॉब की आईडी की सूची प्राप्त करने का प्रयास कर रहा हूं। यह एक एचक्यूएल अनुरोध के साथ ठीक है, लेकिन मुझे पता चलेगा कि मानदंडों का उपयोग करना संभव है या नहीं?हाइबरनेट मानदंडों का उपयोग कैसे करें ऑब्जेक्ट के केवल एक तत्व को पूरे ऑब्जेक्ट को वापस करने के लिए?

एक उदाहरण:

final StringBuilder hql = new StringBuilder(); 
hql.append("select bob.id from ") 
    .append(bob.class.getName()).append(" bob ") 
    .append("where bob.id > 10"); 

final Query query = session.createQuery(hql.toString()); 
return query.list(); 

उत्तर

45

मुझे लगता है कि तुम कर सकते हो कि अनुमान के साथ, कुछ

तरह
Criteria.forClass(bob.class.getName()) 
     .add(Restrictions.gt("id", 10)) 
     .setProjection(Projections.property("id")) 
     ); 
16

इसी प्रकार आप यह भी कर सकते हैं:

Criteria criteria = session.createCriteria(bob.class); 

criteria.add(Expression.gt("id", 10)); 

criteria.setProjection(Projections.property("id")); 

criteria.addOrder(Order.asc("id")); 

return criteria.list(); 
1

एक अन्य विकल्प (हालांकि थोड़ा संयुक्त राष्ट्र हाइबरनेट-esque) का उपयोग करने "कच्चे" एसक्यूएल, इस तरह है:

List<Long> myList = session.createSQLQuery("select single_column from table_name") 
      .addScalar("single_column", StandardBasicTypes.LONG).list(); 
-1

आपको लगता है कि इस

bob bb=null; 

    Criteria criteria = session.createCriteria(bob.class); 
    criteria.add(Restrictions.eq("id",id)); 

    bb = (bob) criteria.uniqueResult(); 
प्रतिबंध के रूप में

की तरह कर सकते हैं आप अपनी स्थिति

+1

जोड़ सकते हैं प्रश्न का उत्तर नहीं है, लेकिन यह मेरे लिए उपयोगी था –

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

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