Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tìm kiếm trường ngày cho một chuỗi bằng API tiêu chí JPA

Được rồi, sau rất nhiều thử nghiệm với các chiến lược khác nhau, đây là những gì tôi đã làm cuối cùng đã thành công.

Tôi thấy bài đăng này tại đây và chợt nhớ đến JPA Tuple Giao diện là một Đối tượng có thể trả về nhiều Loại kết quả. Vì vậy, để thực hiện like của tôi so sánh, và vì Ngày không thể được truyền đơn giản thành Chuỗi nên đây là các bước;

  1. Tôi nhận được cột dưới dạng Tuple
  2. kiểm tra Đối tượng Tuple để xem liệu nó có thể chuyển nhượng được từ Ngày không
  3. nếu đúng như vậy, hãy lấy biểu thức Định dạng Ngày tháng và chuyển nó vào like biểu hiện.

Vì vậy, về cơ bản, đây là những gì tôi có ban đầu dường như đã thất bại;

predicates.add(cb.like(cb.lower(entity.get("dateJoined").as(String.class)), "%"+search.toLowerCase()+"%")); 

Bây giờ, đây là những gì tôi có và hoạt động tuyệt vời;

Path<Tuple> tuple = entity.<Tuple>get("dateJoined");
if(tuple.getJavaType().isAssignableFrom(Date.class)){
    Expression<String> dateStringExpr = cb.function("DATE_FORMAT", String.class, entity.get("dateJoined"), cb.literal("'%d/%m/%Y %r'"));
    predicates.add(cb.like(cb.lower(dateStringExpr), "%"+search.toLowerCase()+"%"));
}

LƯU Ý-NHỮNG CÂU XÉT XÁC NHẬN THẬT SỰ -

  1. Tôi biết rằng từ bất cứ nơi nào bắt đầu tìm kiếm, tất cả Ngày của tôi đều được trình bày trong biểu mẫu này 07/10/2015 10:25:09 PM do đó tôi có khả năng biết cách định dạng Ngày để so sánh trong like của tôi biểu thức dưới dạng "'%d/%m/%Y %r'" .
  2. Đây chỉ là một bước hoạt động cho Ngày. Hầu hết các Loại khác, ví dụ int, long, char ... vv ... đều có thể được Truyền trực tiếp sang Chuỗi và khi tôi khám phá thêm Các loại dữ liệu, tôi chắc chắn sẽ làm như vậy đối với bất kỳ Loại nào khác không thể Truyền trực tiếp sang Chuỗi .

Mặc dù điều này hoàn toàn phù hợp với tôi, nhưng trước khi đánh dấu đây là câu trả lời đúng, tôi sẽ phải tuân theo một số bài kiểm tra mở rộng hơn và trong quá trình này, hãy giữ nó mở để nhận xét bởi bất kỳ ai có bất kỳ sự dè dặt nào về chiến lược của tôi.

Và cuối cùng, với một người rằng điều này đã giúp ích theo bất kỳ cách nào ... Chúc mừng!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chọn Giá trị cột làm Tên cột với các điều kiện trong bảng SQL

  2. Làm cách nào để hiển thị chữ cái đầu tiên dưới dạng chữ hoa?

  3. Mysql:xóa các hàng trong hai bảng có khóa ngoại

  4. Thay thế chuỗi MySQL

  5. Cần truy vấn sự kết hợp riêng biệt của hai trường, cùng với một số lượng mà sự kết hợp riêng biệt xảy ra