Misalnya, jika kita memiliki tabel Buku, bagaimana kita menghitung jumlah total catatan buku dengan hibernate?
242
Untuk versi Hibernate yang lebih lama (<5.2):
Dengan asumsi nama kelas adalah Buku:
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
Paling tidak itu adalah Number
, kemungkinan besar a Long
.
return (Number) session.createCriteria(Book.class).setProjection(Projections.rowCount()).uniqueResult();
Di Jawa saya biasanya perlu mengembalikan int dan menggunakan formulir ini:
sumber
Inilah yang dikatakan dokumen hibernate resmi kepada kami tentang hal ini:
Anda dapat menghitung jumlah hasil permintaan tanpa mengembalikannya:
Namun, tidak selalu mengembalikan
Integer
instance, jadi lebih baik digunakanjava.lang.Number
untuk keselamatan.sumber
org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions.CountFunction
( StandardBasicTypes.LONG )Kamu bisa mencoba
count(*)
Di mana
Books
nama dariclass
- bukan tabel dalam database.sumber
Jika Anda menggunakan Hibernate 5+, maka kueri akan diubah sebagai
Atau jika Anda Membutuhkan TypedQuery
sumber
sumber
Ini berfungsi di Hibernate 4 (Diuji).
Di mana getCurrentSession () adalah:
sumber
Ini sangat mudah, jalankan saja permintaan JPQL berikut:
Alasan kami melakukan casting
Number
adalah karena beberapa database akan kembaliLong
sementara yang lain akan kembaliBigInteger
, jadi demi portabilitas Anda lebih baik melakukan casting keNumber
dan mendapatkan sebuahint
ataulong
, tergantung pada berapa banyak baris yang Anda harapkan akan dihitung.sumber