У меня есть абстрактный класс POJO с именем Person и две сущности с именами Developer и Manager. Эти сущности наследуют абстрактный класс Person. Нет проблем с сохранением их в той же коллекции, но когда я пытаюсь найти, например, только разработчиков в коллекции, метод поиска Morphia получает все записи в коллекции, и я получаю исключение java.lang.ClassCastException.
Morphia morphia = new Morphia();
Datastore ds = morphia.createDatastore("test");
for (Developer savedDeveloper : ds.find(Developer.class).asList()) {
System.out.println(savedDeveloper.getFoo());
}
Исключение
Sep 27, 2013 11:56:18 AM com.google.code.morphia.logging.MorphiaLoggerFactory chooseLoggerFactory
INFO: LoggerImplFactory set to com.google.code.morphia.logging.jdk.JDKLoggerFactory
Developer1
Developer2
Exception in thread "main" java.lang.ClassCastException: test.model.Manager cannot be cast to test.model.Developer
at test.Test.main(Test.java:39)
Java Result: 1
Итак, мои вопросы заключаются в том, как я могу получить только один конкретный список сущностей в коллекции, в которой есть более одной сущности?
Мои POJO
Person.java
общественный абстрактный класс Person {
@Id private ObjectId objectid; private String username; public Person() { } /* ......Getters and Setters*/ }
Люди.java
@Entity("people")
public class Developer extends Person {
private String foo;
public Developer() {
}
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
Manager.java
@Entity("people")
public class Manager extends Person {
private String bar;
public Developer() {
}
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
}
ds.find(Developer.class).filter("className",Developer.class.getName());
- person Ori Dar   schedule 29.09.2013