Element n aus Datenbank Query (JPA / Hibernate)

internet

Top Contributor
Hallo,

ich benötige eine JPA Query, bei der ich ausgehend vom höchsten Element eine beliebe Anzahl abziehe und dann das entsprechende Element aus der DB bekomme...
Klar, könnte ich mir nun alle Element per Liste laden und dann das entsprechende Element zurückgeben.

Ich schätze aber, dass das auch per JPA Query geht?
Meine Query hat zusätzlich ein paar Einschränkungen, bswp.

Java:
Select m FROM MyEntity m WHERE m.deleteFlag = false

Das heißt ich kann auch nicht einfach nach der ID suchen...
Hat jemand eine Idee?
 
Ist das dann so richtig?
Ich möchte vom höchsten Element dann bspw. 5 Objekte abziehen und dieses bekommen.

Java:
    /**
     * Vom Maximum entsprechend abziehen
     */
    public MyEntity findMyEntityWithCalculcatedIdFroMax(int minusValue) {


        StringBuilder query = new StringBuilder("SELECT m FROM MyEntity m ");
        query.append("WHERE m.deleteFlag = false ");
        query.append("ORDER BY m.id DESC");

        Query q = entityManager.createQuery(query.toString());

        q.setFirstResult(0 + minusValue);
        q.setMaxResults(1);
        
        MyEntity result = (MyEntity) q.getSingleResult();

        return result;
    }
 
Das kannst du ja gut testen 🙂

Ich würde noch ein TypedQuery verwenden, dann sparst du dir das casten.
Und die IDE gibt potentiell mehr Hilfestellung, wenn du das Query nicht zuerst mit einem StringBuilder aufbaust
 

Zurück
Oben