Hibernate "createSQLQuery"

darksmilie hat gesagt.:
hmm, das wars leider auch nicht, ich bekomme immer noch die selbe Fehlermeldung.

Es ist dennoch falsch ;) get Methoden müssen den Property mit einem Grossbuchstaben starten lassen.

ich habe ja schon einige daten aus der datenbank rausgeholt und auch reingeschrieben, nur halt nicht über einen einzelen sql satz. Bisher habe ich mir immer alle daten aus der DB geholt und ganau das möchte ich jetzt bei mir ändern, wozu alle, wenn ich nur ein wert brauche ;).

Zur ursprünglichen Frage: Wieso mit SQL wenn du doch Hibernate einsetzt? HQL lässt dich das erwünschte genauso erreichen ohne den umweg über SQL.

"select Urlaub as urlaub where urlaub.hbnUrlaubNummer = WERT'.
 
Muß ich denn beim entity darauf achten welcher datentyp das DB-feld hat, da die Methode int und String als Parameter besitzen kann und mein DB-Feld ein int und kein String feld ist, müsste ich Ihm das doch irgentwie sagen, da er dann ja bei der setMethode den falschen übergabewert bekommt oder nicht?

Letzte Fehlermeldung ist immernoch die Aktuelle
 
Ich habe einbischen in der doku geforscht und da steht es so drin wie ich es jetzt habe:

Code:
list = session.createQuery("SELECT hbnUrlaubNumber FROM tblurlaub WHERE hbnMitarbeiterNumber = ?")
 .setInteger(0,Integer.parseInt(argument)).list();	       
 ergebnis = (Material[]) list.toArray(arrayPrototype);
transaction.commit();

Leider funktioniert es immernoch nicht.
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.IdentNode
\-[IDENT] IdentNode: 'hbnUrlaubNumber' {originalText=hbnUrlaubNumber}

at org.hibernate.hql.ast.SelectClause.initializeExplicitSelectClause(SelectClause.java:138)
at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:440)
at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:351)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.afterQuery(HqlSqlBaseWalker.java:126)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:421)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:824)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:782)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at urlaubsplaner.service.DBImpl.AbstractServiceDBImpl.getAllMaterialWhere(AbstractServiceDBImpl.java:276)
at urlaubsplaner.service.DBImpl.UrlaubServiceDBImpl.getMitarbeiterUrlaub(UrlaubServiceDBImpl.java:53)
at urlaubsplaner.service.DBImpl.UrlaubServiceDBImpl.getUrlaub(UrlaubServiceDBImpl.java:119)
at urlaubsplaner.testdaten.testen.main(testen.java:19)
 
So wieder paar Schritte weiter, nun bekomme ich eine Fehlermeldung, mit der ich absolut nix anfangen kann, da noch nichtmal google mir da was liefert.

Code:
Code:
list = session.createQuery("SELECT :urlaub FROM Urlaub WHERE Urlaub.hbnMitarbeiterNumber = ?")
.setEntity("urlaub",Urlaub.class.getDeclaredField("_hbnUrlaubNumber")).setInteger(0,Integer.parseInt(argument)).list();	       
ergebnis = (Material[]) list.toArray(arrayPrototype);

Fehler:
org.hibernate.hql.ast.QuerySyntaxError: unexpected AST node: : [SELECT :urlaub FROM urlaubsplaner.material.Urlaub WHERE Urlaub.hbnMitarbeiterNumber = ?]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:196)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:421)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:824)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:782)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at urlaubsplaner.service.DBImpl.AbstractServiceDBImpl.getAllMaterialWhere(AbstractServiceDBImpl.java:280)
at urlaubsplaner.service.DBImpl.UrlaubServiceDBImpl.getMitarbeiterUrlaub(UrlaubServiceDBImpl.java:53)
at urlaubsplaner.service.DBImpl.UrlaubServiceDBImpl.getUrlaub(UrlaubServiceDBImpl.java:119)
at urlaubsplaner.testdaten.testen.main(testen.java:19)
Caused by: <AST>:0:0: unexpected AST node: :
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1032)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:380)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
... 10 more
 
Zurück