Ebean如何检查模型是否已被增强?

时间:2012-04-18 06:59:06

标签: ebean

我定义了一个没有字段的基础模型,并通过Ebean的eclipse插件进行增强。然后我使用java反编译器对其进行反编译,发现ebean已经添加了一些字段和方法:

private static String _EBEAN_MARKER = "play.modules.ebean.Model";

protected EntityBeanIntercept _ebean_intercept = new EntityBeanIntercept(this);

protected transient Object _ebean_identity;

public String _ebean_getMarker() {
    return _EBEAN_MARKER;
}

public EntityBeanIntercept _ebean_getIntercept() {
    return this._ebean_intercept;
}

public EntityBeanIntercept _ebean_intercept() {
    if (this._ebean_intercept == null)
        this._ebean_intercept = new EntityBeanIntercept(this);
    return this._ebean_intercept;
}

public void addPropertyChangeListener(PropertyChangeListener listener) {
    this._ebean_intercept.addPropertyChangeListener(listener);
}

public void addPropertyChangeListener(String name, PropertyChangeListener listener) {
    this._ebean_intercept.addPropertyChangeListener(name, listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
    this._ebean_intercept.removePropertyChangeListener(listener);
}

public void removePropertyChangeListener(String name, PropertyChangeListener listener) {
    this._ebean_intercept.removePropertyChangeListener(name, listener);
}

public void _ebean_setEmbeddedLoaded() {}

public boolean _ebean_isEmbeddedNewOrDirty() {
    return false;
}

public Object _ebean_newInstance() {
    return new Model();
}

然后我将这些代码复制到原始Model类,禁用Ebean的增强器,通过eclipse编译它。

我认为它应该与Ebean的增强效果相同。

然后我把它打包成jar,把它放在我的项目中,定义了一个模型类Article来扩展它。

但是有一个错误:

An unexpected error occured caused by exception PersistenceException:
java.lang.IllegalStateException: Class [class test.Model] is not enhanced 
  and [class models.Article] is - (you can not mix!!)

似乎Ebean不会将我的新Model类视为已增强。我想知道Ebean如何检查一个类是否已经被它增强了?

1 个答案:

答案 0 :(得分:2)

Ebean为你的模型添加了增强功能。文章类也是 - 基本上每个属性/ getter / setter。

再次创建此层次结构(不向Model添加内容)并检查两个对象的结果代码。