Вот мои (примерные) объекты.Я не помещал никаких других аннотаций, кроме того, что требуется для Morphia:
package jungle;
@Entity
public class Monkey {
String name;
int bananas;
@Embedded
TreeHouse house;
}
И объект TreeHouse
:
@Embedded
public class TreeHouse {
String type;
int distanceFromWater;
}
Я пытаюсь запросить на type
с помощью регулярных выражений.Вот запрос MongoDB, который я использую (и было доказано, что он работает через командную строку):
db.Monkey.find({ "house.type": { "$regex" : ".*coco.*", "$options": "i"}})
Я могу сгенерировать эту точную строку в Java, используя метод filter
изQuery
объект:
Query query = ...;
query = query.filter("house.type",
Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE));
Однако, когда я пытаюсь запустить поиск в Java, я получаю ValidationException
:
com.google.code.morphia.query.ValidationException: The field 'house' could not be
found in 'jungle.Monkey' while validating - house.house.type; if you wish to
continue please disable validation.
Обратите внимание на удвоение house.house.type
.
Я использую Morphia версии 0.99 и версию 2.5 драйвера Java MongoDB.Я что-то не правильно делаю?Или это проблема, которая была исправлена в более новой версии?