2012-08-15 73 views
1

我想知道是否有機會建立一個關係到interhited類。 以下示例不起作用,因爲它會拋出關係「人員」不存在的錯誤。如果我將DatabaseTable標籤放在Person類上面,它也不起作用。 Ormlite是否支持與繼承對象的關係?ormlite關係和inhertitance

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

對不起,遲到的迴應。

不幸的是,這是行不通的。 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如何做到的。

4

http://code.google.com/p/compot/一槍。它仍處於測試階段,但重點在於實體繼承,並且非常易於使用。

+3

請提及你隸屬於這個項目。在SO上進行自我推銷是完全可以的,但是這應該從一開始就明確。 – 2012-11-21 11:31:38