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

sử dụng thứ tự mysql theo từng trường hợp trong tiêu chí ngủ đông

Tôi nghĩ rằng tôi đã tìm thấy một giải pháp.

Cuối cùng, tôi đã tạo lớp con Order của riêng mình và ghi đè phương thức String toSqlString (Criteria, CriteriaQuery) công khai:

@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) {
    final String[] columns = criteriaQuery.getColumnsUsingProjection( criteria, getPropertyName() );
    final StringBuilder fragment = new StringBuilder();
    fragment.append(" case ").append(columns[0]);
    fragment.append(" when 'pending' then 1 ");
    fragment.append(" when 'approved' then 1 ");
    fragment.append(" else 2 end");
    return fragment.toString();
}

lệnh gọi quan trọng (mà tôi đã tìm thấy trong triển khai ban đầu của lớp đơn hàng) là

criteriaQuery.getColumnsUsingProjection(criteria, getPropertyName());

Điều này đã cho tôi quyền truy cập vào bí danh cho cột mà tôi muốn sắp xếp khi sử dụng câu lệnh trường hợp.

Nếu bất kỳ ai khác đang nhìn vào điều này, nếu bạn đang đặt hàng trên một thuộc tính không có trên đối tượng gốc, thì hãy đảm bảo rằng bạn sử dụng bí danh trong các phép nối tiêu chí của mình và sau đó bạn tham chiếu chính xác các bí danh đó trong thuộc tính Đặt hàng tùy chỉnh của mình Tên khi bạn khởi tạo nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Sử dụng COUNT (*) trong mệnh đề WHERE

  2. Cách tính tổng các giá trị trùng lặp từ bảng mysql

  3. Chọn dữ liệu giữa hai ngày loại trừ một số ngày

  4. CHÈN MySQL ... TRÊN CẬP NHẬT KHÓA DUPLICATE trên Java:Cách Chèn Khác nhau / Đã cập nhật / Thay đổi trạng thái

  5. chèn vào thủ tục được lưu trữ với các tham số MYSQL không hoạt động