2013-05-04 16 views
7

Więc ja to poniższy kod:Zaznacz wszystko ze stołu hibernacji

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

I wan't aby uzyskać wszystkie elementy z tabeli pogoda, ale wciąż otrzymuję następujący błąd: (linia 23, gdzie Tworzę zapytanie)

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)............ 

Na czym polega problem?

+0

Naprawiono błąd, nowy błąd: java.lang.ClassCastException: [Ljava.lang.Object; nie można rzutować na model.WeatherModel \t w akcji.WeatherAction.validate (WeatherAction.java:29) –

+0

nowy błąd: HTTP Status 500 - pogoda nie jest mapowana [z pogody] –

+0

To pytanie jest trudne do wykonania, proszę 1. Połóż numery linii w kodzie, 2. zaktualizuj pytanie zamiast dodawać komentarze ... (lub usuń je i utwórz nowe) –

Odpowiedz

0

Pogoda będzie innym bytem niż WeatherModel. lista będzie mieć obiekty pogody, to może być tylko obsada jeśli jest podtypem WeatherModel

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

Obaj są różne podmioty

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

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

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

Jeśli tabela WeatherModel jest naprawdę ogromna, jak sobie z tym poradzić? Czy jest jakiś sposób, że za każdym razem wybieram 1000 rekordów? – coderz

+2

@coderz czy mogę polecić używanie listy stronicowanej? 'createQuery (" od pogody ") setFirstResult (firstResult) .setMaxResults (maxResults) .getResultList();' – vkuo

+0

@vkuo dobry pomysł :) – coderz

1

prostu miałem podobny problem i wydaje się, które zostały rozwiązane przez podanie pełnej ścieżki do obiektu, który próbujesz wysłać do zapytania. Tak więc, kiedy sprawiłem, że wyglądała następująco: session.createQuery ("from com.mystuff.something.or.other.MyEntity") działało.

1

Spróbuj tego:

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

Edytowałem twoją odpowiedź; możesz umieścić kod w 'code markdown' wciskając go 4 spacje. Twoja odpowiedź była w kolejce niskiej jakości. Możesz poprawić swoją odpowiedź, wyjaśniając, w jaki sposób ten kod rozwiązuje problem. –

Powiązane problemy