Я определил базовую модель, которая не имеет полей, и улучшит ее плагин Eclice eclipse. Затем я использую Java Decompiler декомпилировать его, нашли 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();
}
Затем я скопировал этот код в исходный класс модели, отключенный энхансер в 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