Hallo,
gibt es einen bestimmten Grund warum Hibernate + MSSQL + getSingleResult() nicht kooperieren wollen ? oder liegt es nur an "falschen" Abfragen ?
Hab ein NamedQuery erstellt :
Select count(*) from User u where u. ....
Und dann em.getNamedQuery(..).getSingleResult() (was ja beim count (*) schon irgendwie nahe liegt...) und eine nette : "javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Incorrect syntax near 'limit'." ist die Folge...
Mit Hibernate + MySQL gehts ohne Probleme ;) selbe query, selber code ohne Probleme.
Das selbe als ich einen User anhand von Username + Passowrd (Username ist unique...) finden will und ein NamedQuery wie folgt erstelle :
Select u from User u where u.uName = :name AND u.pass = :uPass
dann wieder mit em.getSingleResult() und ganz unerwartet wieder ein Syntax-fehler nahe "limit"
Aber vielleicht heißt die Funktion ja falsch... vielleicht sollte es ja getSingleResultButDonTTryWithMSSQL() heißen..
Der Workaround (für alle die zufällig das selbe Problem haben sollten) :
stat .getSingleResult() kann man .getResultList().get(0) schreiben...
wenn man sich das generierte SQL Statement (mit getSingleResult() ) anschaut, wird am ende vom select ein " limit = ? " hingeschrieben, ich hoffe zwar das es intern mit " limit = 1 " ersetzt wird.
MfG
|