Я использую MondoDB с слоем Morphia 0.105.Неисправность оператора запроса MongoDB/Morphia?
Мой User
класс:
@Entity
public class User {
@Id
private ObjectId id = null;
private String userId = null;
private String fullName = null;
@Embedded
private UserType userType = null;
@Embedded
private Set<Rights> rights = new HashSet<Rights>();
и мой тестовый класс:
public class Test {
public static void main(String[] args) throws UnknownHostException {
Morphia m = new Morphia();
Datastore ds = m.createDatastore(new MongoClient("localhost"), "test");
m.map(User.class);
User u = new User();
u.setFullName("User Name");
u.setUserId("USERID");
//u.getRights().add(Rights.ADMIN); //NO rights added VS ONE right added
ds.save(u);
u = ds.find(User.class).filter("rights size", 0).get();
System.out.println(u);
System.out.println(u != null);
}
}
Я получил этот неожиданный результат:
The type(s) for the query/update may be inconsistent; using an instance of type 'java.lang.Integer' for the field 'org.vts.sis2.entities.User.rights' which is declared as 'java.util.Set'
Если я раскомментировать строки //u.getRights().add(Rights.ADMIN);
что добавляет пользователь справа, запрос ds.find(User.class).filter("rights size", 1).get()
возвращает corr ect result (даже если отображается предупреждение, но это ложно позитивно, поскольку, на мой взгляд, правильно сравнивать результат оператора размера с целым числом)!
Что я должен делать, чтобы запрашивать пользователей с пустым полем rights
list/set?
Благодаря
же выход, не работает :( – Fuzzo
См https://github.com/mongodb/morphia/issues/561 объяснения. – evanchooly
Это моя открытая проблема. Спасибо за быстрый ответ! – Fuzzo