2015-01-12 13 views
6

Tôi hiện đang sử dụng greenDAO làm ORM cho Ứng dụng Android của mình. Tôi đã gặp sự cố khi cố thực hiện mệnh đề GROUPBY. greenDAO không có API/phương thức trợ giúp để thực hiện các mệnh đề nhóm, vì vậy tôi quyết định sử dụng các phương thức query() hoặc queryRaw() có sẵn cho lớp AbstractDAO, nơi tôi có thể chuyển truy vấn SQL hợp lệ. NHƯNG, cả hai phương thức này trả về một java.util.List, vì vậy điều làm tôi bối rối là làm thế nào tôi có thể nhận được các giá trị của các bí danh cột trong kết quả? Ví dụ,Điều khoản nhóm GreenDAO

SELECT COUNT(ID) AS NUMOFRECORDS, NAME FROM PERSONS GROUP BY AGE 

thực thể của tôi sẽ có NAME và TUỔI lĩnh vực, nhưng tôi đã tạo ra một NUMOFRECORDS cột bí danh, mà không phải là một phần của Entity.

Đánh giá cao sự trợ giúp của bạn!

Trả lời

1

Tôi đang gặp sự cố tương tự. Dường như greenDao không hỗ trợ GROUP BY querys và nó sẽ không thay đổi trong tương lai, theo những gì họ nói here:

GROUP BY là SQL-ish, vì vậy dính vào SQL. greenDAO là về các thực thể, nơi GROUP BY không được hỗ trợ.

5

Đây là giải pháp thay thế cho câu hỏi của bạn: Bao gồm ORDER BY cách ly ở đâu.

Ex:

List<Taxi> list = daoSession.getDaoTaxi().queryBuilder().where(new WhereCondition.StringCondition("1 GROUP BY cant_aciento")).list();

+0

Đó là khó khăn, nhưng công trình và đáng tin cậy – AlexeyVMP

Các vấn đề liên quan