I\'m trying to use inheritance with ORMLite and I can\'t work out if it is supported or not from looking at the documentation and googling.
What I want to do is have
Ok for that but now, how to implements, in that example, a fourth class containing a List<AbstractPerson>
?
I precise my question :
public class ClassRoom {
@ForeignCollectionField(foreignFieldName="asYouWant")
public Collection<Person> peoples;
}
peoples.add(new Student());
peoples.add(new Teacher());
peoples.add(new Student());
because when ormlite will try to access peoples like :
for (Person person : classRoom.peoples)
{
if (person.getType() == Student)
//do stuff
else if (person.getType() == Student)
//do other stuff
}
It won't be able to get personDAO because it doesn't exist (abstract)... I get all my database functionnal with good Id's and relation, it's just a data access question ?
The @DatabaseTable
annotation is only necessary on the Student
or Teacher
tables and would not be used if it was on the Person
base class.
What you need to have is a @DatabaseField
annotation on the id
and name
fields in Person
. For example:
public abstract class Person{
@DatabaseField(generatedId = true)
public int id;
@DatabaseField
public String name;
}
ORMLite should walk the class hierarchy and any fields from the base class should be included in the Student
and Teacher
tables. If you edit your question to show the @DatabaseField
or other annotations, I can comment more.