How do I properly annotate inheritance classes using ORMLite?

前端 未结 2 894
独厮守ぢ
独厮守ぢ 2021-01-05 13:25

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

相关标签:
2条回答
  • 2021-01-05 13:50

    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 ?

    0 讨论(0)
  • 2021-01-05 13:56

    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.

    0 讨论(0)
提交回复
热议问题