Mam zestaw różnych typów obiektów utrwalonych w bazie danych. Teraz chcę zapytać o określony typ obiektów, w tym wszystkie pola tego obiektu. Metoda, którą napisałem poniżej, pobiera wszystkie zadeklarowane pola obiektu i iteruje na polach, aby sprawdzić, czy dany ciąg zapytania jest zawarty.Kwerenda w bazie danych: Znajdź wszystkie obiekty zawierające ciąg zapytania
Działa poprawnie dla typów pól String, ale generuje wartości java.lang.IllegalArgumentException: Field 'documentCompletionStatus': type mismatch. Was STRING, expected INTEGER.
, ponieważ obiektem zapytania jest ciąg znaków. Pomijam wartości Non-String na razie jako obejście, ale jestem ciekawy, czy możliwe jest przeszukiwanie go we wszystkich polach.
Na przykład, jeśli użytkownik chce przeszukiwać wartość całkowitą kierowaną na pole "Wiek" obiektów, nie mogę sprawić, aby działało to w ten sposób.
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();
}
Dzięki Christian, właśnie to robię teraz. Ale myślałem, że w samym Królestwie może być sposób na zrobienie tego. Czy planujecie mieć jakąś metodę zapytania, którą możemy wysłać we wszystkich polach? coś jak 'query.containsAll (searchQuery)', niezależnie od nazwy pola. – osayilgan
W tej chwili nie mamy żadnych planów, ale możesz utworzyć żądanie funkcji na GitHub. Tam łatwiej jest omówić dokładny przypadek użycia i łatwiej jest sprawdzić, czy inni są również zainteresowani tą funkcjonalnością. –