-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: NullPointerException bei Query-Ausführung
PostPosted: Wed Aug 02, 2006 9:13 am 
Newbie

Joined: Wed Aug 02, 2006 8:56 am
Posts: 4
Ich arbeite mit Service-Objekten, welche ich zuerst (erfolgreich) in der DB ablege und dann wieder auslesen will. Das Mapping-File dazu sieht so aus (Auszug):

Code:
<class name="data.Service" table="SERVICE">
       <id name="serviceid" column="SID">
          <generator class="identity"/>
        </id>
        ...
</class>


Um ein bestimmtes Service wieder auszulesen rufe ich folgendes Codestück auf...
Code:
Service service = new Service();
try {
  int count = (Integer)session.createSQLQuery("SELECT COUNT(*) FROM SERVICE WHERE SID = :sid").setInteger("sid", sidnumb).uniqueResult();
  System.out.println("COUNT: " + count);
               
  service = (Service)session.createQuery("from Service s where s.serviceid = :sid").setInteger("sid", sidnumb).uniqueResult();
               
} catch (Exception e) {
  System.out.println(e.getClass() + " - " + e.getMessage());
  }

.. wobei ich immer folgede Ausgabe bekomme:
Quote:
COUNT: 1
class java.lang.NullPointerException - null

Was habe ich da falsch, das zu suchende Service ist in der DB vorhanden und ich habe auch keine Probleme mit der Session?

Danke.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 03, 2006 4:29 am 
Expert
Expert

Joined: Tue Dec 07, 2004 6:57 am
Posts: 285
Location: Nürnberg, Germany
Poste bitte mal nen kompletten StackTrace

_________________
Please don't forget to rate


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 03, 2006 7:44 am 
Newbie

Joined: Wed Aug 02, 2006 8:56 am
Posts: 4
MikePloed wrote:
Poste bitte mal nen kompletten StackTrace


Bekomme folgendes, wobei die Methode createAndSaveServiceProfile() für das Auslesen des Services zuständig ist (das Service soll später moifiziert als neues ServiceProfile-Objekt abgelegt werden, so weit kommt es jedoch noch nicht)...

Quote:
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3232)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:237)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:174)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:871)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:839)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:392)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:333)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:756)
at spy.clientAgent.cumulate.Cumulator.createAndSaveServiceProfile(Cumulator.java:148)
at spy.clientAgent.cumulate.Cumulator.run(Cumulator.java:72)
at spy.clientAgent.cumulate.Cumulator.main(Cumulator.java:236)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 03, 2006 9:33 am 
Expert
Expert

Joined: Tue Dec 07, 2004 6:57 am
Posts: 285
Location: Nürnberg, Germany
Hab noch ein paar Fragen:

- Welche Hibernate Version setzt Du ein?

- Bei welcher Code Zeile tritt der Fehler auf?

- Hast Du schon mal im Hibernate Source code danach gesucht (am besten sogar debuggt)?

_________________
Please don't forget to rate


Top
 Profile  
 
 Post subject:
PostPosted: Fri Aug 04, 2006 4:38 am 
Newbie

Joined: Wed Aug 02, 2006 8:56 am
Posts: 4
MikePloed wrote:
Hab noch ein paar Fragen:

- Welche Hibernate Version setzt Du ein?


Ich nutze: 3.2.0.cr2

Quote:
- Bei welcher Code Zeile tritt der Fehler auf?
- Hast Du schon mal im Hibernate Source code danach gesucht (am besten sogar debuggt)?


Ja, die Exception wird bei...
Code:
service = (Service)session.createQuery("from Service s where s.serviceid = :sid").setInteger("sid", sidnumb).uniqueResult();

...geworfen, wobei zuerst in der Session-Impl-Klasse createQuery und dann in der AbstractQueryImpl-Klasse die Methoden setInteger (hier funktioniert alles) und anschließend uniqueResult (wirft ggf. HibernateException) aufgerufen werden. Die Methode uniqueResult ruft uniqueElement mit dem Parameter list auf, wobei in der indirekt auferufenen Methode
Code:
public List list()
die Exception geworfen wird ... warum ist mir aber unklar (in der Map
Code:
Map namedParams = getNamedParams();
habe ich genau einmal die ID, des Objektes, welches ich laden will... wie bereits gesagt wird anschließend eine NullPointerException geworfen.[/code]


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 06, 2006 1:35 pm 
Newbie

Joined: Wed Aug 02, 2006 8:56 am
Posts: 4
Problem gelöst ... ist, wie erwartet, nicht am Query gelegen, sondern am mapping file.

Für zukünftige Hilfesuchende: Ich habe im Mapping der Klasse Service eine <many-to-one>-Beziehung ... diese muss ich zum Auslesen mit
Code:
lazy="false"
versehen!


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 06, 2006 4:20 pm 
Expert
Expert

Joined: Tue Dec 07, 2004 6:57 am
Posts: 285
Location: Nürnberg, Germany
Ok, ich würde das aber mal in JIRA eintragen. Wenn da ne hibernate exception mit ner aussage kräftigen Message kommt ist es ok. Aber eine NullPointerException sollte hier wirklich nicht auftreten.

_________________
Please don't forget to rate


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.