[hibernate-dev] Naming strategies and join tables

Adriano Santos adriano.nego at gmail.com
Tue Feb 23 08:13:55 EST 2016


First all, where (exactly) can I get the correct way to mapping all the
relations? We are always finding many differents mapping forms and this can
be terrible to beginners. I still dont know if we have some tutorial or
book like that, but I'd like... Anybody here knows?

Este e-mail foi enviado por um computador sem vírus e protegido pelo Avast.
www.avast.com <https://www.avast.com/sig-email>
<#DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Tue, Feb 23, 2016 at 9:36 AM, Steve Ebersole <steve at hibernate.org> wrote:

> Well first, technically isn't that mapping incorrect?  That should use
> @CollectionTable rather than @JoinTable.  I am not sure that makes a
> difference, but in the interest of mapping things properly...
>
> That being said... the whole premise of the legacy EJB3NamingStrategy was
> to prefer the use of table names over the use of entity names.  The table
> name here is `abstractprojet`; there is no table named `projetdiffusion`.
> So
> personally I believe the new behavior is correct, whereas the old behavior
> was incorrect if it really produced `projetdiffusion_technologies` here.
>
> My $.02
>
>
>
>
> On Tue, Feb 23, 2016 at 3:31 AM Emmanuel Bernard <emmanuel at hibernate.org>
> wrote:
>
> > To be honest I cannot make up my mind to decide which behavior is more
> > correct. I can see both as valid.
> >
> > > On 22 Feb 2016, at 18:07, Steve Ebersole <steve at hibernate.org> wrote:
> > >
> > > It is also important to understand that lots of Hibernate code calling
> > into
> > > NamingStrategy did so in quite inconsistent ways.  We decided that
> > > consistency of the calling was more important moving forward.  So while
> > > ImplicitNamingStrategyLegacyJpaImpl strives to be compatible with the
> > > older EJB3NamingStrategy,
> > > we won't do that at the compromise of consistency in the calls.
> > >
> > > Step into ImplicitNamingStrategyLegacyJpaImpl#determineJoinTableName
> and
> > > find out:
> > > 1) where this particular call is coming from
> > > 2) what information is passed in
> > >
> > >
> > >
> > >
> > > On Mon, Feb 22, 2016 at 6:34 AM Guillaume Smet <
> guillaume.smet at gmail.com
> > >
> > > wrote:
> > >
> > >> Important point: AbstractProjet uses SINGLE_TABLE inheritance.
> > >>
> > >> On Mon, Feb 22, 2016 at 12:10 PM, Guillaume Smet <
> > guillaume.smet at gmail.com
> > >>>
> > >> wrote:
> > >>
> > >>> Hi,
> > >>>
> > >>> I'm migrating another application to 5.x and have the following issue
> > >> with
> > >>> the new naming strategies.
> > >>>
> > >>> We used EJB3NamingStrategy and are now using
> > >>> ImplicitNamingStrategy*Legacy*JpaImpl which is advertised as being
> its
> > >>> replacement.
> > >>>
> > >>> The model is the following:
> > >>> @Entity
> > >>> AbstractProjet
> > >>>> @Entity
> > >>>          @DiscriminatorValue(value = "ProjetDiffusion")
> > >>>           public class ProjetDiffusion extends AbstractProjet {
> > >>>                 @ElementCollection
> > >>>                 @Enumerated(EnumType.STRING)
> > >>>                 @JoinTable(uniqueConstraints = {
> > >>> @UniqueConstraint(columnNames = { "projetdiffusion_id",
> "technologies"
> > >> }) })
> > >>>                 private List<ProjetTechnologie> technologies =
> > >>> Lists.newArrayList();
> > >>>
> > >>> Before the upgrade to 5, the join table was called
> > >>> projetdiffusion_technologies and the column was projetdiffusion_id.
> > >>>
> > >>> After the upgrade to 5, the join table is called
> > >>> abstractprojet_technologies and the column abstractprojet_id. Thus,
> we
> > >> have
> > >>> an error on the creation of the unique constraint.
> > >>>
> > >>> Is this change expected?
> > >>>
> > >>> --
> > >>> Guillaume
> > >>>
> > >> _______________________________________________
> > >> hibernate-dev mailing list
> > >> hibernate-dev at lists.jboss.org
> > >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > >>
> > > _______________________________________________
> > > hibernate-dev mailing list
> > > hibernate-dev at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >
> >
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>



-- 

Adriano Araújo Santos


*"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho
original."*


More information about the hibernate-dev mailing list