[jbosstools-dev] Unpredictable NamingStrategy interpretation

Andersen Max max.andersen at redhat.com
Mon May 17 05:36:23 EDT 2010


When you use Tablename="x.y" then naming strategy is not supposed to be involved thus it ain't really related for this.

And that you use a . in entity name or table name does not relate to packages at all. 

Thus the question is why x.y as entityname is treated differently in classToTableName than in all the other cases, i.e. the first column.

/max

On May 13, 2010, at 09:45, Dmitry Geraskov wrote:

> 12/05/2010 19:32, Andersen Max wrote:
>> We integrated naming strategy into Eclipse JPA tooling so when it checks if a table/column
>> exists it won't just use the JPA defaults.
>> 
>> And I assume Dimitry found some inconsistency in that work.
>> But yeah, i'm also not fully following what Dimitry's problem is beyond
>> why @Entity(name="e.M11") doesn't result in e_M11 as table name ?
>>   
>> 
> I created a table to show you what I think:
> 
> NSMethod        /Annotation	@Entity(name="x.y")
> @Tablename="(x.y")
> classToTableName
> x.y
> -
> tableName
> -
> x.y
> collectionTableName
> y
> x.y
> foreignKeyColumnName
> y
> x.y
> 
> I expect to see the same values for whole column. @Table is ok - hibernate leaves "x.y" to the NamingStrategy implementator. He will decide what to do with the dot.
> But what about @Entity? Sometimes we say him the "name of the package", sometimes not. This is strange and looks like a bug.
> 
> Dmitry.
>> /max
>> 
>> On May 12, 2010, at 18:12, Emmanuel Bernard wrote:
>> 
>>   
>> 
>>> You guys lost me, I'm out of context.
>>> Any change I get the actual naming strategy code, the Hibernate Annotations and Core version you are talking about and more important what are you guys trying to do :)
>>> 
>>> On 12 mai 2010, at 18:02, Andersen Max wrote:
>>> 
>>>     
>>> 
>>>> On May 12, 2010, at 16:54, Dmitry Geraskov wrote:
>>>> 
>>>>       
>>>> 
>>>>> Hi, Emmanuel,
>>>>> 
>>>>> The problem is in interpretation of specified names with dots.
>>>>> 
>>>>> I created naming strategy where all method just join all passed parameters with "_".
>>>>> For example 
>>>>> @Override
>>>>>   public String collectionTableName(String ownerEntity,  String ownerEntityTable, String associatedEntity,
>>>>>           String associatedEntityTable, String propertyName) {
>>>>>       return ownerEntity + "_"+ associatedEntity+ "_" + associatedEntityTable + "_" + associatedEntity  +
>>>>>       "_" +propertyName;
>>>>>   }
>>>>> 
>>>>> 
>>>>> And what I have found:
>>>>> 
>>>>> @Entity(name = "e.M11")
>>>>> public class ManyToMany1 implements Serializable {
>>>>> 
>>>>> }
>>>>> 
>>>>>         
>>>>> 
>>>> but that is not a collection table - its an Entity Table ...
>>>> 
>>>>       
>>>> 
>>>>> What do you think will be DB table name? The correct answer is "e.M11".
>>>>>         
>>>>> 
>>>> I would have assumed e_M11 ....so yeah thats a bit surprising.
>>>> 
>>>>       
>>>> 
>>>>> The same for @Entity @Table(name = "e.M11") 
>>>>> 
>>>>>         
>>>>> 
>>>> Here you are overriding namingstrategy so that shouldn't be surprising.
>>>> 
>>>>       
>>>> 
>>>>> But when this entity is used in relationship mapping as target entity things become different:
>>>>> for @Entity(name = "e.M11") entity.ManyToMany2_entity.ManyToMany1_M11_entity.ManyToMany1_mtm1
>>>>> for @Table(name = "e.M11") entity.ManyToMany2_entity.ManyToMany1_e.M11_entity.ManyToMany1_mtm1
>>>>>         
>>>>> 
>>>> I'm not seeing this as different. In one case you are saying naming strategy should do its thing Entity(name="e.M11")
>>>> and in the other you override it (i.e. @Table(name="e.M11").
>>>> 
>>>> Remember name on entity is for *entity*-name not table name.
>>>> 
>>>>       
>>>> 
>>>>> I didn't see any specification for how NamingStrategy should be used. And I even *fear* to compare this behaviour with core hibernate behaviour. I guess there will be some differences too.
>>>>>         
>>>>> 
>>>> I remember emmanuel having fun with mapping JPA naming standards over to Hibernate NamingStrategy especially when 
>>>> it came to collections and entity names ...but I don't recall the conclusion.
>>>> 
>>>> Surprised entity name's doesn't seem to be processed on equal footing as class names. (i.e. why does @Entity(name="e.M11") not reasult in e_M11 as table name ?
>>>> 
>>>> /max
>>>> 
>>>>       
>>>> 
>>>     
>>   




More information about the jbosstools-dev mailing list