So can you guys please review my pull request to asses whether this is the best way to implement that change? Any comments are welcome.
On Fri, Nov 5, 2010 at 7:45 PM, Emmanuel Bernard <emman...@hibernate.org>wrote: > 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 > _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev