[hibernate-dev] Naming strategies and join tables

Emmanuel Bernard emmanuel at hibernate.org
Tue Feb 23 04:31:37 EST 2016


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




More information about the hibernate-dev mailing list