Sorry, I had a off-line week, catching up here. I think we all agree the expected behavior (according to the spec) is that EntityType.getName() should return @Entity.name. I'd say for the future major rev, we should make the change. I also think that the metamodel use at this stage is small enough that such change would only impact a few users. And there is a clear and easy API change for people impacted.
I personally would do the move as soon as possible but I can see / respect the decision if people want to wait post 3.6.x (in practice that would most likely be Hibernate 4). On 3 nov. 2010, at 16:55, Steve Ebersole 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 <st...@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 <st...@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 < >>> >>> st...@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 >>>>>>>> >>>>>>>> <emman...@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 >>>>>>>> >>>>>>>> <emman...@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@lists.jboss.org >>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> hibernate-dev mailing list >>>>>>>>> hibernate-dev@lists.jboss.org >>>>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>>>>>>> >>>>>>>> --- >>>>>>>> Steve Ebersole <st...@hibernate.org> >>>>>>>> http://hibernate.org >>>>>>>> _______________________________________________ >>>>>>>> hibernate-dev mailing list >>>>>>>> hibernate-dev@lists.jboss.org >>>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>>>>> >>>>>> --- >>>>>> Steve Ebersole <st...@hibernate.org> >>>>>> http://hibernate.org >>>>> >>>>> --- >>>>> Steve Ebersole <st...@hibernate.org> >>>>> http://hibernate.org >>>>> _______________________________________________ >>>>> hibernate-dev mailing list >>>>> hibernate-dev@lists.jboss.org >>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >>> --- >>> Steve Ebersole <st...@hibernate.org> >>> http://hibernate.org >>> _______________________________________________ >>> hibernate-dev mailing list >>> hibernate-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev > > --- > Steve Ebersole <st...@hibernate.org> > http://hibernate.org > _______________________________________________ > hibernate-dev mailing list > hibernate-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev