Beispiele für Hibernate-Abfragen (HQL)

Beispiele für Ruhezustand-Abfragen (HQL)

Hibernate hat eine neue Sprache namens Hibernate Query Language (HQL) erstellt, deren Syntax der SQL-Sprache der Datenbank sehr ähnlich ist. Der Hauptunterschied zwischen istHQL uses class name instead of table name, and property names instead of column name.

HQL ist extrem einfach zu erlernen und zu verwenden, und der Code ist immer selbsterklärend.

1. Beispiel für eine HQL-Auswahlabfrage

Abrufen von Bestandsdaten mit dem Bestandscode "7277".

Query query = session.createQuery("from Stock where stockCode = :code ");
query.setParameter("code", "7277");
List list = query.list();
Query query = session.createQuery("from Stock where stockCode = '7277' ");
List list = query.list();

2. Beispiel für eine HQL-Aktualisierungsabfrage

Aktualisieren Sie einen Bestandsnamen auf "DIALOG1", wobei der Bestandscode "7277" lautet.

Query query = session.createQuery("update Stock set stockName = :stockName" +
                    " where stockCode = :stockCode");
query.setParameter("stockName", "DIALOG1");
query.setParameter("stockCode", "7277");
int result = query.executeUpdate();
Query query = session.createQuery("update Stock set stockName = 'DIALOG2'" +
                    " where stockCode = '7277'");
int result = query.executeUpdate();

3. Beispiel für eine HQL-Löschabfrage

Löschen Sie einen Bestand, dessen Bestandscode "7277" lautet.

Query query = session.createQuery("delete Stock where stockCode = :stockCode");
query.setParameter("stockCode", "7277");
int result = query.executeUpdate();
Query query = session.createQuery("delete Stock where stockCode = '7277'");
int result = query.executeUpdate();

4. Beispiel für das Einfügen einer HQL-Abfrage

In HQL wird nur INSERT INTO… SELECT… unterstützt. Es gibt kein INSERT IN ... WERTE. HQL unterstützt nur das Einfügen aus einer anderen Tabelle. Beispielsweise

"insert into Object (id, name) select oo.id, oo.name from OtherObject oo";

Fügen Sie einen Bestandsdatensatz aus einer anderen Tabelle backup_stock ein. Dies kann auch als Bulk-Insert-Anweisung bezeichnet werden.

Query query = session.createQuery("insert into Stock(stock_code, stock_name)" +
                "select stock_code, stock_name from backup_stock");
int result = query.executeUpdate();

Diequery.executeUpdate() geben zurück, wie viele Datensätze eingefügt, aktualisiert oder gelöscht wurden.