Zit momenteel met het volgende probleem. Heb een tabel met daarin een kolom 'naam'. Per naam kunnen er meerdere versies zijn opgeslagen. Een versie is een simpele int. Bij een nieuwe versie, wordt er een record met dezelfde naam en een opgehoogde versie toegevoegd. De combinatie naam/versienummer is dan ook uniek.
Nu wil ik van alle records enkel de laatste versie ophalen. In native SQL krijg ik dan zoiets:
Deze query werkt prima, maar omdat hij native is, kan ik hem niet automatisch mappen op mijn entities. Ik zoek dan ook een JPQL/Criteria variant maar blijkbaar gebruik ik hier een constructie die daarbij niet toegestaan is. Helaas is de foutmelding dermate cryptisch, dat ik niet weet welke constructie wel zou moeten werken.
Nu wil ik van alle records enkel de laatste versie ophalen. In native SQL krijg ik dan zoiets:
SQL:
1
2
3
| SELECT t1.* FROM tabel AS t1, (SELECT name, max(versienummer) AS latest FROM tabel GROUP BY name) AS t2 WHERE t1.name = t2.name AND t1.versienummer = t2.latest; |
Deze query werkt prima, maar omdat hij native is, kan ik hem niet automatisch mappen op mijn entities. Ik zoek dan ook een JPQL/Criteria variant maar blijkbaar gebruik ik hier een constructie die daarbij niet toegestaan is. Helaas is de foutmelding dermate cryptisch, dat ik niet weet welke constructie wel zou moeten werken.
[ Voor 5% gewijzigd door Swinnio op 22-07-2011 10:03 ]
If the world wouldn't suck, we'd all fall off