SELECT e.text FROM Entity e WHERE e.key = :key XOR e.key IS NULL
Edit, vid närmare eftertanke kommer inte det där funka...
6 svar · 551 visningar · startad av Simkisen
SELECT e.text FROM Entity e WHERE e.key = :key XOR e.key IS NULL
Edit, vid närmare eftertanke kommer inte det där funka...
mm, med tanke på att båda jämförelserna kan vara true så failar det tyvärr..
Jag hade kanske löst det med följande SQL:
SELECT e.text FROM Entity e WHERE e.key = key OR e.key IS NULL ORDER BY CASE WHEN e.text IS NOT NULL THEN 1 ELSE 2 END LIMIT 1
Peter, jag satt och testade med något liknande, fast utan CASE. (Jag får för övrigt inte din case-kod att funka, ens när jag ändrar END till END CASE)
ORDER BY e.key DESC verkar funka bra.
SELECT e.text FROM `test_default` e
WHERE e.stringid = 0 AND (e.key = 'tr' OR e.key IS null)
ORDER BY e.key DESC
LIMIT 1;
Frågan är vilket DBMS ts använder, det är inte säkert att CASE existerar i den aktuella dialekten. Är det MySQL fungerar CASE och framför allt i ORDER BY.
MySQL med Toplink är det men är inte säker på att CASE funkar med JPQL dock, har inte hunnit testa än.