Heim > Datenbank > MySQL-Tutorial > Wie spezifiziere ich bestimmte Spalten in Hibernate-Kriterienabfragen?

Wie spezifiziere ich bestimmte Spalten in Hibernate-Kriterienabfragen?

Linda Hamilton
Freigeben: 2024-11-02 11:08:30
Original
981 Leute haben es durchsucht

How to Specify Specific Columns in Hibernate Criteria Queries?

Bestimmte Spalten in Hibernate-Kriterienabfragen angeben

Im Ruhezustand ruft die Standardkriterienabfrage alle Spalten aus der Zieltabelle ab. Aus Leistungs- oder Sicherheitsgründen ist es jedoch häufig wünschenswert, bestimmte Spalten auszuschließen. So erreichen Sie dies:

Verwenden von Projektionen

Mit Projektionen können Sie die spezifischen Spalten angeben, die Sie abrufen möchten. Dies kann erreicht werden, indem die Methode Projections.projectionList() verwendet und die gewünschten Eigenschaften hinzugefügt werden:

<code class="java">Criteria cr = session.createCriteria(User.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("id"), "id")
      .add(Projections.property("Name"), "Name"));</code>
Nach dem Login kopieren

Umgang mit Aliaskonflikten

Bei der Verwendung von Projektionen ist dies erforderlich Behandeln Sie Aliaskonflikte, da Hibernate Aliase für die zurückgegebenen Spalten generiert. Um dieses Problem zu beheben, können Sie die Methode setResultTransformer() mit Transformers.aliasToBean() verwenden, um die Ergebnisse in ein erwartetes Objekt umzuwandeln:

<code class="java">cr.setResultTransformer(Transformers.aliasToBean(User.class));</code>
Nach dem Login kopieren

Abfragebeispiel

Betrachten Sie die aktualisierte Abfrage in Ihrem Beitrag, um bestimmte Spalten abzurufen:

<code class="sql">select
    this_.TEMPLATE_ID,
    this_.TEMPLATE_NAME,
    this_.CREATE_DATE,
    this_.UPDATE_DATE,
    this_.STATUS_CODE,
    this_.USER_ID
from
    templates this_ 
where
    this_.STATUS_CODE = 1
    and this_.PRACTICE_ID = 1 
    and this_.USER_ID in (1, 2) 
order by
    this_.TEMPLATE_NAME asc
limit ?</code>
Nach dem Login kopieren

Um dies in eine Hibernate-Kriterienabfrage zu übersetzen, können Sie den folgenden Code verwenden:

<code class="java">Criteria cr = session.createCriteria(Template.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("TEMPLATE_ID"), "TEMPLATE_ID")
      .add(Projections.property("TEMPLATE_NAME"), "TEMPLATE_NAME")
      .add(Projections.property("CREATE_DATE"), "CREATE_DATE")
      .add(Projections.property("UPDATE_DATE"), "UPDATE_DATE")
      .add(Projections.property("STATUS_CODE"), "STATUS_CODE")
      .add(Projections.property("USER_ID"), "USER_ID"))
    .add(Restrictions.eq("this_.STATUS_CODE", 1))
    .add(Restrictions.eq("this_.PRACTICE_ID", 1))
    .add(Restrictions.in("this_.USER_ID", Arrays.asList(1, 2)))
    .addOrder(Order.asc("this_.TEMPLATE_NAME"))
    .setResultTransformer(Transformers.aliasToBean(Template.class));</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie spezifiziere ich bestimmte Spalten in Hibernate-Kriterienabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage