Archief - namedquery fout.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Mikey_1

Legacy Member
Hallo

ik heb een probleem met een namedquery.


de code werkt in MySQL (ik krijg 1 resultaat, de record die ik nodig heb)


in mijn tabel heb ik 3 gegevens elk met een datum

ik moet de record lezen met de "laatste" datum dat nu nog geldig is .
er zijn 2 records met een datum die geldig zijn, (de 3de datum is maar geldig over 5 maand)
en van die 2 records neem ik de laatste (de recenste) (via "nr" (nr is autonummering)

in MYsql is dit deze code:

Code:
SELECT * FROM prijzenTabel where datum < "2012-12-31" order by nr desc limit 1 ;

en als resultaat heb ik de juiste record.

nu wil ik dit toepassen met een namedquery, maar krijg ik 2 records (de datum ingave lukt wel, maar de limit erkent hij niet, denk ik)

mijn code
Code:
@NamedQuery(name = "Prijzentabel.findHuidigePrijzen", query = "SELECT p FROM Prijzentabel p where datum < :datumVandaag order by nr desc limit 1"),


in mijn entity klasse (waar de namedquery staat zijn er "gele foutmeldingen"
screenshot => Image - TinyPic - Free Image Hosting, Photo Sharing & Video Hosting

welke veranderingen moet in mijn namedquery doen zodat ik maar 1 resultat krijg . want ik versta niet echt de foutmeldingen. (een komma plaatsen? en wat moet de andere fouten?)


bedankt en gelukkig nieuwjaar

Dieterg

Legacy Member
Klopt, limit wordt niet ondersteund.

Je kan dit als volgt oplossen:

Code:
@NamedQuery(name="Prijzentabel.findHuidigePrijzen", query="SELECT p FROM Prijzentabel p where p.datum < :datumVandaag order by p.nr desc")


entityManager.createNamedQuery("Prijzentabel.findHuidigePrijzen").setMaxResults(1).getResultList();

Heb niet veel tijd om meer uitleg te geven. Ik hoop dat het werkt, code is uit men mouw geschud :-)

Dastardly

Legacy Member
geen idee uit welke taal dat namedquery gedoe komt. maar ondersteund dat framework daadwerkelijk limit? als ik mij goed herinner is er in java iets dat daar op trekt (dat namedquery gedoe) en daar moest dat denk ik via een aparte methode (.getmaxresult, .setresultmax, of iets wat er op trekt :p heb al jaren geen java meer gezien en zou dat liefst zo houden ook).

by linq werkt het ook zo. eerst een select die je doet met x aantal voorwaarden etc. en dan achteraf .take(4)

edit: god damn, sniped :(, Dieterg had in ieder geval de methode juist.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan