2013-02-14 46 views
15

पर अपग्रेड किया गया है, मैंने अभी 3.25 से 4.2.0.CR1 से हाइबरनेट को अपग्रेड किया है। मैं createSQLQuery() विधि के साथ ओरेकल 10 जी में वर्तमान पंक्ति संख्या का पता लगाने के लिए डीएओ कक्षाओं में निम्न विधियों की तरह कुछ उपयोग कर रहा था।Hibernate.INTEGER अनुपलब्ध है, जब हाइबरनेट संस्करण को 4.2.0.CR1

SELECT row_num 
FROM (SELECT row_number() 
       OVER (
        ORDER BY banner_id DESC) AS row_num, 
       banner_id 
     FROM banner_images 
     ORDER BY banner_id DESC) 
WHERE banner_id = :id 
@Override 
@SuppressWarnings("unchecked")  
public int getCurrentRow(String id, int rowsPerPage) 
{   
    return (Integer) sessionFactory 
        .getCurrentSession() 
        .createSQLQuery("Above query") 
        .addScalar("row_num", Hibernate.INTEGER) //<------- ??? 
        .setParameter("id", Long.parseLong(id)) 
        .uniqueResult(); 
} 

.addScalar("row_num", Hibernate.INTEGER) पद्धति के रूप में इसके बाद के संस्करण कोड स्निपेट में दिखाया गया है, एक संकलन समय त्रुटि जारी करता है।

cannot find symbol 
symbol: variable INTEGER 
location: class Hibernate 

यह org.hibernate.Hibernate कक्षा में उपलब्ध नहीं है। नेटबीन आईडीई का उपयोग कर रहा हूं 7.2.1 इस तरह की स्थिरता सूचीबद्ध नहीं कर रहा है। Google खोज मुझे वास्तविक समाधान तक नहीं ले जा सका। तो हाइबरनेट (4.2.0. सीआर 1) के इस संस्करण में विकल्प क्या है?

उत्तर

25

यह Hinernate.Integer 3.6.x

आप IntegerType.INSTANCE बजाय का उपयोग करना चाहिए के बाद से मान्य नहीं है।

5

आप हाइबरनेट के एक पुराने संस्करण का उपयोग कर रहे हैं, लेकिन, जबकि 3.5.x पर या नीचे पदावनत मान का उपयोग नहीं करना चाहते हैं, तो आप new IntegerType() क्योंकि IntegerType.INSTANCE उपयोग करने के लिए 3.6 से पहले अस्तित्व में नहीं है होगा।

1

है:

  • आयात org.hibernate.type.StandardBasicTypes;
  • StandardBasicTypes.INTEGER द्वारा Hibernate.INTEGER को प्रतिस्थापित करें।