Steve, I think I know where you coming from. And my request is to do it
*only* in the context of JPA meta-model. I'm far from making any changes to
the internals of Hibernate.
My pain point is that if EntityType is not providing me with the
@Entity.name I don't have any other means of getting that piece of
information through meta-model other than getting the entity class by name
and checking @Entity in my code, which I'd consider pretty nasty hack.
What's more FQN of entity class can be obtained not only by calling
EntityType#getName, but also by calling EntityType#getJavaType (inherited
from Type) or EntityType#getBindableJavaType (inherited form Bindable).
On Wed, Nov 3, 2010 at 3:55 PM, Steve Ebersole <steve(a)hibernate.org> wrote:
I completely empathize since the JPA "metamodel" defines no
other means to
get
at this information. I am however nervous especially nervous about
backporting this fix as it is a change in behavior that is far from clearly
a
bug. I am kind of new to annotations so it is hard for me to say how/if
users
use this EntityType.getName() today. Emmanuel? Hardy?
On Wednesday, November 03, 2010, at 10:34 am, Tomasz Blachowicz wrote:
> It's up to you. I put my arguments in the ticket. I agree that jsr317
spec
> does not specify the correlation of the @Entity.name and
> EntityType#getName(), but I do think it if reasonable to think that
entity
> name returned by the meta model and the entity name specified in the
> annotation is the same thing. Furthermore the two other implementations
of
> jsp317, Apache OpenJPA and EclipseLink, went this very route.
>
> On Wed, Nov 3, 2010 at 2:24 PM, Steve Ebersole <steve(a)hibernate.org>
wrote:
> > We were just discussing this on IRC. Yes I think adding a new
attribute
> > to PersistentClass to capture the value of @Entity.name specifically
> > (really we'd
> > just populate it with EntityBinder.name) is best.
> >
> > So we know *how* to do it. But to be honest, I am still uncertain
> > whether we
> > *should* do it.
> >
> > HHH-2597 is completely irrelevant here. We are not discussing the
> > Hibernate
> > Criteria API here.
> >
> > HHH-4375 is a bad idea. As stated before, @Entity.name is not really
in
> > any
> > way associated with Hibernate's notion of an entity name. @Entity.name
> > is what Hibernate calls a query import name.
> >
> > On Wednesday, November 03, 2010, at 08:54 am, Tomasz Blachowicz wrote:
> > > I think I understand what you mean. "Node name" might not be
indeed
the
> > > best way to do that.
> > >
> > > I think implementation of the EntityBinder with regards to the
handling
> >
> > of
> >
> > > @Entity.name is correct. My understanding of the jsr-317 is that the
> >
> > entity
> >
> > > name used in queries should be @Entity.name if specified otherwise
the
> > > default value that is unqualified name of the entity class. This is
how
> > > EntityBinder works now I presume
> > > (EntityBinder#bindEjb3Annotation(@Entity)). The think is that this
> > > value is set to the name field of EntityBinder and then used to set
> > > PresistentClass#setNodeName().
> > >
> > > I wonder how I could implement the meta model change to make sure the
> > > EntityType#getName() returns @Entity.name or unqualified class name
in
> >
> > case
> >
> > > the @Entity.name has not been specified. How about adding new
property
> > > to the PersistentClass that would hot the value as computed in
> > > EntityBinder and the I could use the value of this property to
> > > populate EntityTypeImpl from MetamodelImpl#buildEntityType? Can you
> > > comment that approach?
> > >
> > > On Wed, Nov 3, 2010 at 1:22 PM, Steve Ebersole
<steve(a)hibernate.org>
> >
> > wrote:
> > > > Ah, I misread. I thought you meant the Hibernate notion of an
> > > > "entity name".
> > > > As far as I can tell now looking at it, there is no such annotation
> >
> > equiv
> >
> > > > for
> > > > that.
> > > >
> > > > @javax.persistence.Entity.name is really more akin to
Hibernate's
> >
> > notion
> >
> > > > of an
> > > > import name for queries.
> > > >
> > > > I am not really understanding the benefit of returning the query
> > > > import name
> > > > for EntityType.getName(). Personally I think its just a case of
> > > > badly matched
> > > > attribute names and an inference being drawn there.
> > > >
> > > > But we do not really use that internally, so i have no qualms with
> > > > changing it
> > > > I guess. However, I do not want "node name" used. That is
a
totally
> > > > different beast, and if annotations ever support alternate entity
> > > > modes this
> > > > will become a problem in this code you suggest; its currently
working
> > > > just by
> > > > a quirk where the default node name just happens to be the
> > > > unqualified entity
> > > > name, and I am assuming the annotation binding code is setting it
if
> > > > @Entity.name is specified as well. To be honest, after looking at
> > > > org.hibernate.cfg.annotations.EntityBinder#bindEntity my first
> > > > thought was whether this code even handles @Entity.name properly in
> > > > terms of making it an
> > > > import name. It would work as is for the default case because that
> > > > is Hibernate's internal default behavior (to register the
> > > > unqualified
> >
> > entity
> >
> > > > name
> > > > as an import name).
> > > >
> > > > On Wednesday, November 03, 2010, at 07:58 am, Steve Ebersole wrote:
> > > > > If that is really the case, then that is a problem with the
> >
> > annotation
> >
> > > > > binding code.
> > > > >
> > > > > On Wednesday, November 03, 2010, at 06:50 am, Tomasz Blachowicz
> >
> > wrote:
> > > > > > Hi Steve,
> > > > > >
> > > > > > PersistentClass#getEntityName is not good, because it is
exactly
> >
> > the
> >
> > > > same
> > > >
> > > > > > value as PersistentClass#getClassName.
> > > > > > PersistentClass#getClassName is populated in
> > > > > > org.hibernate.cfg.annotations.EntityBinder#bindEntity with
the
> >
> > value
> >
> > > > from
> >
> > org.hibernate.annotations.common.reflection.java.JavaXClass#getName.
> >
> > > > > > JavaXClass#getName is implemented as clazz.getName(), so it
is
> >
> > always
> >
> > > > > > class name and the @Entity.name is simply ignored for the
purpose
> >
> > of
> >
> > > > the
> > > >
> > > > > > entity name. And this is the reason I used
> > > > > > PersistentClass#getNodeName that returns @Entity.name or
> > > > > > "unqualified" class name in case @Entity.name is
unspecified.
> > > > > >
> > > > > > If I'd stick with PersistentClass#getEntityName the
issues is
not
> > > > > > resolved and EntityType.getName() returns stil FQN of the
class
> > > > > > instead of @Entity.name or "unqualified" class
name.
> > > > > >
> > > > > > Regards,
> > > > > > Tom
> > > > > >
> > > > > > On Wed, Nov 3, 2010 at 11:12 AM, Steve Ebersole <
> >
> > steve(a)hibernate.org>
> >
> > > > wrote:
> > > > > > > Uncertain yet of how these pull request comments work
on
> > > > > > > GitHub,
> >
> > so
> >
> > > > > > > I thought
> > > > > > > I'll make sure and respond here. The change
should use
> > > > > > > org.hibernate.mapping.PersistentClass#getEntityName
instead
of
> > > > > > > org.hibernate.mapping.PersistentClass#getNodeName.
> > > > > > >
> > > > > > > See my other email to the dev list about porting to
3.6
> > > > > > >
> > > > > > > On Wednesday, November 03, 2010, at 05:48 am, Tomasz
Blachowicz
> > > >
> > > > wrote:
> > > > > > > > I've submitted the pull request (
> > > > > > > >
https://github.com/hibernate/hibernate-core/pull/8) for
> >
> > master. I
> >
> > > > > > > > should have it also ready for 3.6 branch as soon
as I
manage
> > > > > > > > to
> > > >
> > > > merge
> > > >
> > > > > > > > the change between branches in this git thng that
is pretty
> > > > > > > > new to
> > > >
> > > > me
> > > >
> > > > > > > > ;)
> > > > > > > >
> > > > > > > > On Tue, Nov 2, 2010 at 1:18 PM, Emmanuel Bernard
> > > > > > >
> > > > > > > <emmanuel(a)hibernate.org>wrote:
> > > > > > > > > Cool :)
> > > > > > > > > If you use GitHub's infrastructure and
use a
pull-request,
> > > > > > > > > we can get that integrated quite fast.
> > > > > > > > >
> > > > > > > > > On 2 nov. 2010, at 13:50, Tomasz Blachowicz
wrote:
> > > > > > > > >
> > > > > > > > > I've already created the ticket (
> > > >
> > > >
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5709
)
> > > >
> > > > > > > > > . And I should be able to create the patch
sometime this
> > > > > > > > > evening.
> > > > > > > > >
> > > > > > > > > Cheers,
> > > > > > > > > Tom
> > > > > > > > >
> > > > > > > > > On Tue, Nov 2, 2010 at 12:24 PM, Emmanuel
Bernard
> > > > > > >
> > > > > > > <emmanuel(a)hibernate.org>wrote:
> > > > > > > > >> I'd say you're correct and the
name should match in the
> > > >
> > > > metamodel.
> > > >
> > > > > > > > >> Can you open a JIRA issue and even
better try and work
out
> > > > > > > > >> a patch?
> > > > > > > > >>
> > > > > > > > >> PS: I've spilled hot chocolate on my
laptop in the past:
> > > > > > > > >> not
> > > >
> > > > good,
> > > >
> > > > > > > > >> the machine slowly but inevitably dies
as corrosion wins
> > > > > > > > >> it
> > > >
> > > > over.
> > > >
> > > > > > > > >> On 2 nov. 2010, at 12:35, Tomasz
Blachowicz wrote:
> > > > > > > > >> > Hi,
> > > > > > > > >> >
> > > > > > > > >> > I had been working recently on some
stuff that deals
> > > > > > > > >> > with JPA2 meta
> > > > > > > > >>
> > > > > > > > >> model.
> > > > > > > > >>
> > > > > > > > >> > Hibernate is my JPA2
provider/engine. Everything works
> >
> > fine
> >
> > > > > > > > >> > except
> > > > > > >
> > > > > > > one
> > > > > > >
> > > > > > > > >> > little thing that is name of the
Entity. I'd expect
that
> > > > > > > > >> > value returned
> > > > > > > > >>
> > > > > > > > >> by
> > > > > > > > >>
> > > > > > > > >> > EntityType.getName() would be the
same as @Entity.name
> > > > > > > > >> > but not the
> > > > > > >
> > > > > > > FQN
> > > > > > >
> > > > > > > > >> of
> > > > > > > > >>
> > > > > > > > >> > the entity class. Although this is
not explicitly
stated
> >
> > in
> >
> > > > the
> > > >
> > > > > > > > >> > JPA2 specification it is reasonable
to expect that
> > > >
> > > > @Entity.name
> > > >
> > > > > > > > >> > or the
> > > > > > > > >>
> > > > > > > > >> default
> > > > > > > > >>
> > > > > > > > >> > value (shortened class name) is the
name of the entity
> >
> > used
> >
> > > > > > > > >> > in
> > > > > > >
> > > > > > > queries
> > > > > > >
> > > > > > > > >> ans
> > > > > > > > >>
> > > > > > > > >> > well as other places such as meta
model. I know the
> > > > > > > > >> > topic
> >
> > of
> >
> > > > > > > > >> > entity name
> > > > > > > > >>
> > > > > > > > >> was
> > > > > > > > >>
> > > > > > > > >> > discussed many times in the past
(HHH-2597, HHH-4375,
> > > >
> > > > HHH-4465,
> > > >
> > > > > > > > >> HHH-5709),
> > > > > > > > >>
> > > > > > > > >> > and the rationale has been given
for current
> >
> > implementation
> >
> > > > > > > > >> > of
> > > > > > > > >>
> > > > > > > > >> Hibernate,
> > > > > > > > >>
> > > > > > > > >> > however the topic hasn't been
touched in the context
of
> >
> > meta
> >
> > > > > > > > >> > model that
> > > > > > > > >>
> > > > > > > > >> is
> > > > > > > > >>
> > > > > > > > >> > new stuff added in JPA2.
> > > > > > > > >> >
> > > > > > > > >> > I just wanted to know what is your
thinking with
regards
> >
> > to
> >
> > > > the
> > > >
> > > > > > > matter
> > > > > > >
> > > > > > > > >> at
> > > > > > > > >>
> > > > > > > > >> > this stage and how likely is
implementation of
Hibernate
> > > > > > > > >> > would
> > > > > > >
> > > > > > > change
> > > > > > >
> > > > > > > > >> > to match EntityType.getName with
@Entity.name.
> > > > > > > > >> >
> > > > > > > > >> > P.S.
> > > > > > > > >> > I just have spilled the entire cup
of fresh coffee on
my
> > > >
> > > > desktop
> > > >
> > > > > > > while
> > > > > > >
> > > > > > > > >> > writing this message. The mouse
seems to be drowned :|
> > > > > > > > >> >
> > > > > > > > >> > Cheers,
> > > > > > > > >> > Tom
> > > > > > > > >> >
_______________________________________________
> > > > > > > > >> > hibernate-dev mailing list
> > > > > > > > >> > hibernate-dev(a)lists.jboss.org
> > > > > > > > >> >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > hibernate-dev mailing list
> > > > > > > > hibernate-dev(a)lists.jboss.org
> > > > > > > >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > > > > > >
> > > > > > > ---
> > > > > > > Steve Ebersole <steve(a)hibernate.org>
> > > > > > >
http://hibernate.org
> > > > > > > _______________________________________________
> > > > > > > hibernate-dev mailing list
> > > > > > > hibernate-dev(a)lists.jboss.org
> > > > > > >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > > > >
> > > > > ---
> > > > > Steve Ebersole <steve(a)hibernate.org>
> > > > >
http://hibernate.org
> > > >
> > > > ---
> > > > Steve Ebersole <steve(a)hibernate.org>
> > > >
http://hibernate.org
> > > > _______________________________________________
> > > > hibernate-dev mailing list
> > > > hibernate-dev(a)lists.jboss.org
> > > >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >
> > ---
> > Steve Ebersole <steve(a)hibernate.org>
> >
http://hibernate.org
> > _______________________________________________
> > hibernate-dev mailing list
> > hibernate-dev(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
---
Steve Ebersole <steve(a)hibernate.org>
http://hibernate.org
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev