2013-02-14 16 views
15

Ho appena aggiornato Hibernate da 3.2.5 a 4.2.0.CR1. Stavo usando qualcosa come i seguenti metodi nelle classi DAO per individuare il numero di riga corrente in Oracle 10g con il metodo createSQLQuery().Hibernate.INTEGER non è disponibile quando la versione di Hibernate è aggiornata a 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(); 
} 

Procedimento .addScalar("row_num", Hibernate.INTEGER) come illustrato nel frammento di codice di cui sopra, emette un errore di compilazione.

cannot find symbol 
symbol: variable INTEGER 
location: class Hibernate 

Non è disponibile nella classe org.hibernate.Hibernate. L'IDE NetBeans che sto utilizzando è 7.2.1 non sta elencando una costante di questo tipo. La ricerca di Google non può portarmi alla soluzione reale. Quindi qual è l'alternativa in questa versione di Hibernate (4.2.0.CR1)?

risposta

25

Questa Hinernate.Integer è deprecato dal 3.6.x

Si dovrebbe usare IntegerType.INSTANCE invece.

5

Se si utilizza una versione precedente di Hibernate, ma non si desidera utilizzare un valore deprecato mentre su 3.5.xo sotto, sarà necessario utilizzare new IntegerType() perché IntegerType.INSTANCE non esiste prima di 3.6.

1

Do:

  • org.hibernate.type.StandardBasicTypes importazione;
  • sostituire Hibernate.INTEGER con StandardBasicTypes.INTEGER.
Problemi correlati