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