In Hibernate bietet die Kriterienabfrage-API eine flexible Möglichkeit, SQL-ähnliche Abfragen zu erstellen. Standardmäßig ruft die generierte Abfrage alle Spalten ab, was zu Leistungsproblemen führen kann, wenn bestimmte Spalten ausgeschlossen werden.
Um eine bestimmte Spalte aus einer Kriterienabfrage auszuschließen, verwenden Sie Projektionen . Mithilfe von Projektionen können Sie die Spalten angeben, die in das Ergebnis einbezogen werden sollen.
<code class="java">CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<Object[]> criteriaQuery = cb.createQuery(Object[].class); Root<Entity> root = criteriaQuery.from(Entity.class); criteriaQuery.multiselect(root.get("id"), root.get("name"), root.get("description")); List<Object[]> result = session.createQuery(criteriaQuery).list();</code>
Diese Abfrage ruft nur die Spalten „ID“, „Name“ und „Beschreibung“ ab und lässt andere Spalten aus dem Ergebnis aus.
Bei der Verwendung von Projektionen müssen die Ergebnisaliase mit den in der Projektionsliste angegebenen Eigenschaften übereinstimmen. Andernfalls können Fehler wie „Unbekannter Spalten-Alias in der Where-Klausel“ auftreten.
<code class="java">CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<Object[]> criteriaQuery = cb.createQuery(Object[].class); Root<Entity> root = criteriaQuery.from(Entity.class); criteriaQuery.multiselect(root.get("id").as("y0"), root.get("name").as("y1"), root.get("description").as("y2")); List<Object[]> result = session.createQuery(criteriaQuery).list();</code>
In dieser Abfrage stimmen die Aliase („y0“, „y1“, „y2“) mit überein Reihenfolge der Eigenschaften in der Projektionsliste.
Das HQL-Äquivalent der Kriterienabfrage mit Projektionen ist:
<code class="hql">SELECT e.id, e.name, e.description FROM Entity e</code>
Das obige ist der detaillierte Inhalt vonWie rufe ich bestimmte Spalten mithilfe der Hibernate-Kriterienabfrage ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!