openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Joysn <joys...@gmail.com>
Subject Re: Annotations removed when enhancing?
Date Wed, 08 Aug 2012 19:58:52 GMT
Hi Kevin!

thanks for your hint as well. i learn a lot about OpenJPA these days :)

Chris

On 8 August 2012 21:44, Kevin Sutter <kwsutter@gmail.com> wrote:

> And, to ensure that subclassing is not available, put this property in your
> persistence.xml (disabling subclassing became the default in OpenJPA
> 2.0.x):
>
> <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
>
> If OpenJPA detects subclassing when loading Entities, it will throw an
> Exception and not allow further processing (if the above property is set to
> "unsupported").
>
> Thanks,
> Kevin
>
> On Wed, Aug 8, 2012 at 1:22 PM, Mark Struberg <struberg@yahoo.de> wrote:
>
> > yikes, that means you use subclassing.
> >
> >
> > I recommend to use the openjpa-maven-plugin to enhance the classes at
> > build time already.
> >
> > Here is a sample which you can look at
> >
> >
> https://github.com/struberg/lightweightEE/blob/master/backend-api/pom.xml
> >
> > We still need to polish our own documentation, but the parameters are
> > almost the same as in the old version which you can find at [1].
> > The openjpa-maven-plugin is not part of OpenJPA itself since 2.2.0.
> >
> >
> > LieGrue,
> > strub
> >
> > [1] http://mojo.codehaus.org/openjpa-maven-plugin/usage.html
> >
> >
> >
> > ----- Original Message -----
> > > From: Chris Joysn <joysn71@gmail.com>
> > > To: users@openjpa.apache.org
> > > Cc:
> > > Sent: Wednesday, August 8, 2012 7:04 PM
> > > Subject: Re: Annotations removed when enhancing?
> > >
> > > well... i am not so an experienced OpenJPA user but i can provide the
> > > following information:
> > >
> > > before merging the entity to an persistence context the class of the
> > entity
> > > looks like:
> > >
> > > org.activiti.standalone.jpa.FieldAccessJPAEntity@4260ab
> > >
> > > after the merge it looks like:
> > >
> > > org.apache.openjpa.enhance.org
> > > $activiti$standalone$jpa$FieldAccessJPAEntity$pcsubclass@df88d2
> > >
> > > when performing an
> > >
> > > private boolean isEntityAnnotationPresent(Class<?> clazz) {
> > >     return (clazz.getAnnotation(Entity.class) != null);
> > > }
> > >
> > > the Entity.class annotation is found before the merge, not not after
> the
> > > merge.
> > >
> > > And when subclassing is bad, how can i get rid of it?
> > >
> > > Chris
> > >
> > > On 8 August 2012 15:55, Kevin Sutter <kwsutter@gmail.com> wrote:
> > >
> > >>  >  What way of enhancement do you use in your project?
> > >>  >  If you use subclassing, then the generated subclass is probably
> > > without
> > >>  annotations.
> > >>
> > >>  And, if you are using subclassing, then quit using subclassing!  :-)
> > >>  Nobody that is serious about their application should be using
> > subclassing
> > >>  support.  I've even been throwing around the idea of removing the
> > >>  subclassing support altogether since it can cause more issues than it
> > >>  resolves...  But, that's a whole separate discussion...
> > >>
> > >>  Kevin
> > >>
> > >>  On Wed, Aug 8, 2012 at 1:13 AM, Mark Struberg <struberg@yahoo.de>
> > > wrote:
> > >>
> > >>  >
> > >>  >
> > >>  > Kevin is right. I re-checked it now as well. At least for
> build-time
> > >>  > enhanced entities the annotations remain on the class and fields.
> We
> > > do
> > >>  not
> > >>  > use method annotations, so I cannot check this quickly.
> > >>  >
> > >>  > What confused me earlier is that jad (java decompiler) doesn't
> > > seem to
> > >>  > show annotations in general. But looking at the hex dump of the
> class
> > >>  file
> > >>  > itself clearly shows that they are there.
> > >>  >
> > >>  > What way of enhancement do you use in your project?
> > >>  > If you use subclassing, then the generated subclass is probably
> > > without
> > >>  > annotations.
> > >>  >
> > >>  >
> > >>  > LieGrue,
> > >>  > strub
> > >>  >
> > >>  >
> > >>  >
> > >>  > ----- Original Message -----
> > >>  > > From: Kevin Sutter <kwsutter@gmail.com>
> > >>  > > To: users@openjpa.apache.org
> > >>  > > Cc:
> > >>  > > Sent: Tuesday, August 7, 2012 5:21 PM
> > >>  > > Subject: Re: Annotations removed when enhancing?
> > >>  > >
> > >>  > > I'm curious why you think that the annotations are
> > > removed...  Even
> > >>  after
> > >>  > > enhancement is performed, OpenJPA parses the entity classes
to
> > > get the
> > >>  > ORM
> > >>  > > data, which is normally specified via annotations.  Do you have
> > > an
> > >>  > example?
> > >>  > >
> > >>  > > Kevin
> > >>  > >
> > >>  > > On Sun, Aug 5, 2012 at 1:09 PM, Chris Joysn
> > > <joysn71@gmail.com> wrote:
> > >>  > >
> > >>  > >>  well.. unfortunately a framework relies on it to detect
JPA
> > >>  > entities... i
> > >>  > >>  think there is no other way to detect in a reliable way
JPA
> > > entities?
> > >>  > >>
> > >>  > >>  LieGrueZuRue
> > >>  > >>
> > >>  > >>
> > >>  > >>  On 5 August 2012 19:52, Mark Struberg
> > > <struberg@yahoo.de> wrote:
> > >>  > >>
> > >>  > >>  > Having code relying on @Entity is bitter so to say
;)
> > >>  > >>  >
> > >>  > >>  > All JPA functions could also be added via XML, without
> > > having any
> > >>  > >>  > annotation on your entities...
> > >>  > >>  >
> > >>  > >>  > Such code would btw also not work in Hibernate if
you
> > > use proxies.
> > >>  > >>  Becasue
> > >>  > >>  > the generated proxies don't have annotations
> > > neither.
> > >>  > >>  >
> > >>  > >>  > LieGrue,
> > >>  > >>  > strub
> > >>  > >>  >
> > >>  > >>  >
> > >>  > >>  >
> > >>  > >>  > ----- Original Message -----
> > >>  > >>  > > From: Chris Joysn <joysn71@gmail.com>
> > >>  > >>  > > To: users@openjpa.apache.org
> > >>  > >>  > > Cc:
> > >>  > >>  > > Sent: Sunday, August 5, 2012 7:19 PM
> > >>  > >>  > > Subject: Annotations removed when enhancing?
> > >>  > >>  > >
> > >>  > >>  > > Hello,
> > >>  > >>  > >
> > >>  > >>  > > is it possible that entities do not get their
> > > annotations removed
> > >>  > > when
> > >>  > >>  > > OpenJPA is performing its enhancements?
> > >>  > >>  > >
> > >>  > >>  > > unfortunately some code relies on the fact that
> > > eg. @Entity is
> > >>  > > present
> > >>  > >>  on
> > >>  > >>  > > classes, but this annotation gets removed by
> > > OpenJPA.
> > >>  > >>  > >
> > >>  > >>  > > thanks
> > >>  > >>  > >
> > >>  > >>  >
> > >>  > >>
> > >>  > >
> > >>  >
> > >>
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message