We recently switched from Ebean 7 -> 12.11.5 and are now trying to reproduce the Ebean-class -enhancement-on-disk functionality we had in Ebean 7 using the ANT example given on the Ebean web page. Unfortunately it seems the enhanced POJO classes do not see properties from their base POJO classes, since we get exceptions like the one below when executing a simple Ebean test that uses GooPojo (ENTITY_ID is a property defined in a base class of GooPojo, classes worked in Ebean 7 and work in Ebean 12 when using the IntelliJ javaagent based Ebean plugin).
Any idea what we are doing wrong ?
Environment:
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
Groovy 3.0.9
WIN10
IntelliJ 2021.1.1
Exception:
[2021-10-04 22:35:33|ERROR|main|io.ebeaninternal.server.deploy.BeanDescriptorManager] Error in deployment
java.lang.IllegalStateException: If you are running in an IDE with enhancement plugin try a Build -> Rebuild Project to recompile and enhance all entity beans. Error - property ENTITY_ID not found in [VISIBLE, VISIBLE_VA, PARENT_EID_IDH, NAME, CREATED_BY_IDH, LAST_CHANGED_BY] for type class com.domain.my.orm.entities.pojos.GooPojo
at io.ebeaninternal.server.deploy.BeanDescriptorManager.setBeanReflect(BeanDescriptorManager.java:1310)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1270)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1195)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:669)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:293)
at io.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:177)
at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:109)
at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:35)
at io.ebean.DatabaseFactory.createInternal(DatabaseFactory.java:136)
at io.ebean.DatabaseFactory.create(DatabaseFactory.java:85)
at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:50)
at io.ebean.EbeanServerFactory$create.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at com.domain.my.orm.OrmHelper.createEbeanServer(OrmHelper.groovy:123)
...
ANT task we use for the enhancement:
<?xml version="1.0" encoding="UTF-8"?>
<project basedir=".">
<taskdef
name="ebeanEnhanceTask"
classname="io.ebean.enhance.ant.AntEnhanceTask"
classpath="./lib/ebean/ebean-12.11.5/agent/ebean-agent-12.12.0.jar"
/>
<target name="ebeanEnhance">
<ebeanEnhanceTask classSource="./out/production/groovyutil" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovysql" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovydomino" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovydomino_legacy" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovyldap" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovyebean" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovyvaadin" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/production/groovyidh_vaadin_ebean" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/test/groovysql" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/test/groovyutil" packages="com.domain.my.*" transformArgs="debug=1" />
<ebeanEnhanceTask classSource="./out/test/groovyvaadin" packages="com.domain.my.*" transformArgs="debug=1" />
</target>
</project>