我想知道是否有机会建立与班级关系的关系。 下面的示例不起作用,因为它抛出关系“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;
}
答案 0 :(得分:4)
给http://code.google.com/p/compot/一个机会。它仍处于测试阶段,但它专注于实体继承,并且非常易于使用。
答案 1 :(得分:0)
对于迟到的回复感到抱歉。
不幸的是,这不起作用。 School
类必须查询2个不同的表来构建persons
外部集合字段。
您可以使用Person
表格来完成此操作,其中Student
和Teacher
具有外国Person
字段,但ORMLite无法执行此操作为你自动化。
@DatabaseTable
public class Student {
@DatabaseField
public String class;
@DatabaseField
public String year;
@DatabaseField(foreign = true)
public Person person;
}
然后Person
不会是abstract
,而且会有Person
表。这可能就是Hibernate如何做到这一点。