2013-05-04 11 views
7

così ho questo codice seguente:Seleziona tutto da una tabella ibernazione

Query query = session.createQuery("from Weather"); 
     List<WeatherModel> list = query.list(); 
     WeatherModel w = (WeatherModel) list.get(0); 

ho wan't per ottenere tutti gli elementi dalla tabella di tempo, ma continuo a ricevere il seguente errore: (linea 23 è dove Creo la query)

java.lang.NullPointerException 
    at action.WeatherAction.validate(WeatherAction.java:23) 
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:251) 
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)............ 

Qual è il problema?

+0

Corretto l'errore, nuovo errore: java.lang.ClassCastException: [Ljava.lang.Object; non può essere lanciato sul modello.WeatherModel \t at action.WeatherAction.validate (WeatherAction.java:29) –

+0

nuovo errore: HTTP Status 500 - meteo non mappato [dal meteo] –

+0

Questa domanda è difficile da seguire, per favore 1. Inserisci numeri di linea nel codice, 2. aggiorna la domanda invece di aggiungere commenti ... (o cancellala e creane una nuova) –

risposta

0

Il tempo sarà un'entità diversa rispetto a WeatherModel. vostra lista avrà oggetti meteorologiche, può essere gettata unica se è sottotipo di WeatherModel

10
Query query = session.createQuery("from Weather"); //You will get Weayher object 
List<WeatherModel> list = query.list(); //You are accessing as list<WeatherModel> 

Entrambi sono diverse entità

Query query = session.createQuery("from Weather"); 

List<Weather> list = query.list(); 

Weather w = (Weather) list.get(0); 
+0

Se la tabella WeatherModel è davvero enorme, come gestirla? C'è un modo in cui ogni volta seleziono 1000 record? – coderz

+2

@coderz posso raccomandare l'uso di un elenco impaginato? 'createQuery (" da Weather "). SetFirstResult (firstResult) .setMaxResults (maxResults) .getResultList();' – vkuo

+0

@vkuo buona idea :) – coderz

1

Ho appena avuto un problema simile, e sembra essere stato risolto fornendo il percorso completo all'oggetto che si sta tentando di eseguire una query. Quindi, quando ho fatto in modo che assomigliasse a questo: session.createQuery ("da com.mystuff.something.or.other.MyEntity") ha funzionato.

1

Prova questo:

Session session = sessionFactory.getCurrentSession(); 
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); 
CriteriaQuery<WeatherModel> criteriaQuery = criteriaBuilder.createQuery(WeatherModel.class); 
Root<WeatherModel> root = criteriaQuery.from(WeatherModel.class); 
criteriaQuery.select(root); 
Query<WeatherModel> query = session.createQuery(criteriaQuery); 
List<WeatherModel> weatherModelList = query.getResultList(); 
+0

Ho modificato la tua risposta; puoi mettere il codice in 'code markdown' facendolo rientrare di 4 spazi. La tua risposta era nella coda di bassa qualità. Potresti migliorare la tua risposta spiegando come questo codice risolve il problema. –

Problemi correlati