Rolf, if you use maven you may also try the openjpa-maven-plugin's [1] enhance mojo [2]
LieGrue, strub [1] http://mojo.codehaus.org/openjpa-maven-plugin/ [2] http://mojo.codehaus.org/openjpa-maven-plugin/examples/enhance.html --- Rolf Schumacher <mailingl...@august.de> schrieb am Mi, 25.3.2009: > Von: Rolf Schumacher <mailingl...@august.de> > Betreff: Re: has not been enhanced > An: users@openjpa.apache.org > Datum: Mittwoch, 25. März 2009, 18:23 > Thank you, Kevin > > took only a quarter to understand (if I did). I like short > explanations. > > Let me repeat: > > - enhanced classes provide services to openjpa classes at > runtime > - therefore enhancement is needed for an openjpa project to > run > (it's recommended to avoid "sub-classing" (what's > that??)) > - it's recommended to use -javaagent:....PCEnhancerTask > (that is executed in the same context and prior to > the main class) > with the executing jvm, in order to enhance the > classes at load-time > > I experimented a bit with Ricks explanation and found my > error. Thank you. > > Obviously (I'm far from sure about it) the openjpa maven > plugin or the > openjpa environment takes care about enhancement or > sub-classing. My > error was caused different: > > In my data model I have two multi-key tables. > They need an extra class in order to represent the primary > key. > The openjpa maven plugin or netbeans (I don't know either) > automatically > extends the persistence.xml with the class name, but not > with the > classname of the primary keys. > I use the details of the key of only one of them. > Therefore I had to manually extend the persistence.xml by > the class name > of that primary key (TimesheetCommentPK in my case). > > I can omit the other primary key class name from > persistence.xml as long > as I do not need details of that multi-field key. > > Now my tests are running as expected. Maybe with > sub-classing - how to > check? Or does the maven plug-in take care of > enhancements? > > ================== > > What do you think about this solution to testing with > enhancement > omitting sub-classing?: > > Put "new PCEnhancerTask();" as the first statement in > setUpClass of > Junit test? > > And for running an application: > > Put "new PCEnhancerTask();" as the first statement in > main(String[] args)? > > Rolf > > Kevin Sutter wrote: > > Rolf, > > Your "build" is also executing a main called App, > which calls Bill. So, the > > enhancement processing that is being requested is due > to the OpenJPA > > runtime, not the normal compile, build, and packaging > phase. > > > > For optimum performance, OpenJPA uses byte-code > weaving, or enhancement, on > > the Entity classes. This process inserts some > specific byte-codes into the > > Entity classes which help OpenJPA with processing of > the Persistence > > Contexts and the associated Entities. > > > > The first message in your log indicates that you are > not performing the > > enhancement process. Without this enhancement > process, we fall back to an > > Entity sub-classing approach. Not only does this > approach not perform very > > well, there are several known issues with this > sub-classing. The main idea > > of sub-classing was to provide an initial, easy > out-of-box experience for > > OpenJPA users. Unfortunately, due to some of the > limitations of this > > approach, our users almost immediately hit a > roadblock. > > > > Rick has provided a good write-up on Enhancement on > our Persistence blog: > > http://webspherepersistence.blogspot.com/2009/02/openjpa-enhancement.html > > > > Hopefully this will give a bit more background. > Take a read through this > > and then post back when you have more questions. > Thanks for your interest > > in OpenJPA! > > > > Kevin > > > > On Wed, Mar 25, 2009 at 3:41 AM, Rolf Schumacher > <mailingl...@august.de>wrote: > > > > > >> thank you for your answer, Rick > >> > >> you'll find the persistence.xml here: http://apache.pastebin.com/m4a91654f > >> the highlighted class is that one that netbeans > has introduced when it > >> generated it from the table TIMESHEET_COMMENT in > the database eHour. > >> > >> you'll find the Java stack dump here: http://apache.pastebin.com/m7641c82f > >> it happens when I try to build the maven project > with netbeans build > >> > >> you'll find the pom.xml here: http://apache.pastebin.com/m6f437735 > >> > >> I mentioned running openjpa:enhance > >> the Java stackdump you can find here: http://apache.pastebin.com/m2da3ff7d > >> > >> > >> > >> Rick Curtis wrote: > >> > >>> Can we get some more info? Your > persistence.xml file along with the > >>> > >> actual error message would be a good start. > >> > >>> -Rick > >>> > >>> > >>> I'm working successfully on my first jpa > project, > >>> using netbeans, maven and openjpa. > >>> > >>> Now I added another entity class by applying > the generator from the pull > >>> down menu of a package "New/Entity Classes > from Database ..." > >>> > >>> It generated two entity classes because the > key has multiple colums: > >>> Entity and EntityPK. > >>> > >>> When I built the project again I get the > error: > >>> > >>> "The type "class EntityPK" has not been > enhanced." > >>> > >>> And the build stops. > >>> > >>> I looked in the documentation for > "enhancement" and found it to be an > >>> important subject but was not able to > understand why a class shall be > >>> enhanced in order for the project to get > built. > >>> > >>> Before I added this entity to the other 5 - > one with a primary key class > >>> as well - I didn't had this problem and > everything worked smooth. Now I > >>> got stuck. > >>> > >>> What shall I look into to overcome this > problem? > >>> > >>> Rolf > >>> > >>> p.s. When I ran the maven goal openjpa:enhance > an exception occurs while > >>> parsing a non-entity class, telling me that a > class can not be found > >>> that I provide at runtime. Honestly, I do not > know what I was doing here. > >>> > >>> > >>> > >>> > >>> > >>> > > > > >