Ormlite关系和继承

时间:2012-08-15 09:34:52

标签: inheritance ormlite

我想知道是否有机会建立与班级关系的关系。 下面的示例不起作用,因为它抛出关系“person”不存在的错误。如果我将DatabaseTable标记放在Person类之上,它也不起作用。 Ormlite是否支持与继承对象的关系?

public abstract class Person{
    @DatabaseField(generatedId = true)
    public int id;
    @DatabaseField
    public String name;
    @DatabaseField(canBeNull = false, foreign = true)
    private School school;
 }

@DatabaseTable
 public class Student extends Person{
    @DatabaseField
    public String class;
    @DatabaseField
    public String year;
 }

 @DatabaseTable
 public class Teacher extends Person{
    @DatabaseField
    public String title;
 }

 @DatabaseTable
 public class School {
     @DatabaseField(generatedId = true)
     public int id;
     @ForeignCollectionField(eager = true)
     ForeignCollection<Person> persons;
 }

2 个答案:

答案 0 :(得分:4)

http://code.google.com/p/compot/一个机会。它仍处于测试阶段,但它专注于实体继承,并且非常易于使用。

答案 1 :(得分:0)

对于迟到的回复感到抱歉。

不幸的是,这不起作用。 School类必须查询2个不同的表来构建persons外部集合字段。

您可以使用Person表格来完成此操作,其中StudentTeacher具有外国Person字段,但ORMLite无法执行此操作为你自动化。

@DatabaseTable
public class Student {
    @DatabaseField
    public String class;
    @DatabaseField
    public String year;
    @DatabaseField(foreign = true)
    public Person person;
}

然后Person不会是abstract,而且会有Person表。这可能就是Hibernate如何做到这一点。