API tiêu chí xác định function expression
để thực thi các hàm SQL gốc trong CriteriaBuilder
giao diện như sau:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
nơi name
là tên của hàm SQL, type
là loại trả lại mong đợi và args
là một danh sách các đối số có thể thay đổi (nếu có).
Dưới đây là một ví dụ về cách sử dụng nó trong truy vấn Tiêu chí:
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();
ở đâu
-
RadExamTimes
:một thực thể gốc giả định -
MM/DD/YYYY
:định dạng dành riêng cho cơ sở dữ liệu (trong ví dụ này là định dạng ngàyPostgresql; đối với Oracle, hãy sử dụng định dạng Ora, v.v.) -
to_char
:Hàm postgresql để chuyển đổi giá trị ngày tháng thành chuỗi -
begin_exam
:trường ngày sẽ được định dạng
Chuỗi định dạng không thể được chuyển như vậy để literal()
phương pháp được sử dụng để bọc nó.
Lưu ý:Ví dụ trên được thử nghiệm trên cơ sở dữ liệu MySQL với hàm MySQL và định dạng ngày tháng tương ứng; nhưng ví dụ đã thay đổi để phù hợp với cú pháp Postgresql.