Tôi đã một tập hợp các loại khác nhau của các đối tượng vẫn kiên trì trong cơ sở dữ liệu Realm. Bây giờ tôi muốn truy vấn một số loại đối tượng nhất định bao gồm tất cả các trường của đối tượng đó. Phương pháp tôi đã viết bên dưới, là nhận tất cả các trường được khai báo của đối tượng và lặp lại trên các trường để kiểm tra xem chuỗi truy vấn đã cho có được chứa hay không.Query Trong Cơ sở dữ liệu Realm: Tìm tất cả các đối tượng Chứa Query String
Nó hoạt động tốt cho các loại trường chuỗi nhưng ném java.lang.IllegalArgumentException: Field 'documentCompletionStatus': type mismatch. Was STRING, expected INTEGER.
cho giá trị số nguyên vì đối tượng truy vấn tìm kiếm của tôi là chuỗi. Tôi bỏ qua các giá trị Non-String cho bây giờ như là một workaround nhưng tôi tò mò nếu nó có thể tìm kiếm nó trong tất cả các lĩnh vực.
Ví dụ, nếu người dùng muốn tìm kiếm một mục tiêu là "Age" lĩnh vực của đối tượng giá trị số nguyên, tôi không thể làm cho nó làm việc theo cách này.
public <T extends RealmObject> List<T> searchDatabase(Class<T> clazz, String searchQuery) {
/* Begin Query */
RealmQuery<T> query = realmDatabase.where(clazz).beginGroup();
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
/* Skip NON-String Values */
if (!fields[i].getType().equals(String.class)) {
continue;
}
if (i == 0) {
query.contains(fields[i].getName(), searchQuery, false);
} else {
query.or().contains(fields[i].getName(), searchQuery, false);
}
}
/* Return All Objects Found */
return query.endGroup().findAll();
}
Cảm ơn Christian, đó là những gì tôi đang làm bây giờ. Nhưng tôi nghĩ có thể có một cách để làm điều đó trong chính Realm. Các bạn có dự định có một loại phương thức truy vấn mà chúng tôi có thể truy vấn trong tất cả các trường không? một cái gì đó như 'query.containsAll (searchQuery)', bất kể tên trường. – osayilgan
Chúng tôi không có bất kỳ kế hoạch vào lúc này, nhưng cảm thấy tự do để tạo ra một yêu cầu tính năng trên GitHub. Có dễ dàng hơn để thảo luận về trường hợp sử dụng chính xác và dễ dàng hơn để xem liệu những người khác có quan tâm đến chức năng đó không. –