3
我定义它不具有域基本模型,并通过Ebean的Eclipse插件增强它。然后,我使用Java反编译器进行反编译了一下,发现ebean有添加一些领域和方法,它: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的增强,通过月食编译。
我认为应该有由Ebean提高相同的效果。
然后我打包作为一个罐子,把它放在我的项目,定义的模型类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是如何检查一个班级是否得到了加强?
我找到了一种方法来检查什么Ebean做了一个模型。使用一些Java反编译器将增强的.class文件转换为java,您可以看到模型实现了Ebean的一个接口(还有一些额外的方法)。我认为Ebean会检查它。 – Freewind 2012-05-11 03:45:54