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