2013-06-04 91 views
5

我想向我的greenDAO實體添加一些自定義代碼。我看到有像保護區那樣的東西。但我不喜歡將生成的類簽入到我的git存儲庫。我想爲此使用繼承。將自定義代碼添加到greenDAO實體

即我有一個實體User。所以我希望greenDAO生成一個名爲UserBase的類。這一點我想User擴展和實現的方法是這樣的:

public String getFullName() { 
    return this.first + " " + this.last; 
} 

firstlast是管理屬性。

但我不知道如何告訴greenDAO使用類User而不是生成的實體UserBase。有沒有辦法做到這一點?

+0

爲什麼不把'getFullName'方法放在UserBase中? – AMerle

+0

,因爲那時我必須將生成的文件簽入到我的git中。但是,課程的最大部分是生成的,不需要簽入。您也不簽入R.java,不是嗎? – keineantwort

+0

nope,但我添加了我生成的類。 – AMerle

回答

6

我找到了一種方法如何解決這個問題:

您可以輸入父爲每個實體:

Entity user = schema.addEntity("User"); 
... 
user.setSuperclass("UserBase"); 

這樣你就可以實現UserBase爲抽象類。

public abstract class UserBase { 

    public String getFullName() { 
    return getFirst() + " " + getLast(); 
    } 

    public abstract int getFirst(); 
    public abstract int getLast(); 
} 

這裏的缺點是,你必須聲明所產生的干將爲抽象的方法來訪問它們。

+0

謝謝發佈!我有同樣的確切問題,這是黃金!我一直在努力擴展我的Dao,直到你發佈這個方法。 – AutoM8R

7

常用的方法是在生成的實體中使用「保留部分」。保持部分允許直接在生成的實體中添加成員和方法。點擊這裏查看詳細信息: http://greendao-orm.com/documentation/modelling-entities/

+0

「保留區域」或MDD術語「保護區域」有幾個缺點: *您必須將生成的代碼簽入您的vcs *您必須保持代碼清潔。某處必須是保留部分的簽名。如果你打破了這個簽名(就像事故或代碼格式化),你將失去你的代碼 – keineantwort

相關問題