Kriteria API mendefinisikan function expression
untuk menjalankan fungsi SQL asli di CriteriaBuilder
antarmuka sebagai berikut:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
dimana name
adalah nama fungsi SQL, type
adalah tipe pengembalian yang diharapkan dan args
adalah daftar variabel argumen (jika ada).
Berikut adalah contoh cara menggunakannya dalam kueri Kriteria:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(String.class);
Root<RadExamTimes> root = cq.from(RadExamTimes.class);
cq.select( cb.function("to_char", String.class, root.get("begin_exam"), cb.literal("MM/DD/YYYY")));
TypedQuery<String> query = entityManager.createQuery(cq);
List<String> result = query.getResultList();
dimana
RadExamTimes
:entitas akar hipotetisMM/DD/YYYY
:format khusus database (dalam contoh ini format tanggal Postgresql; untuk Oracle gunakan format Ora, dll)to_char
:Fungsi Postgresql untuk mengubah nilai tanggal menjadi stringbegin_exam
:kolom tanggal yang akan diformat
String format tidak dapat diteruskan apa adanya sehingga literal()
metode yang digunakan untuk membungkusnya.
Catatan:Contoh di atas diuji pada database MySQL dengan fungsi MySQL dan format tanggal yang sesuai; tetapi contoh diubah agar sesuai dengan sintaks Postgresql.