2013-06-04 65 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

相关问题