[jbosstools-dev] Unpredictable NamingStrategy interpretation

Andersen Max max.andersen at redhat.com
Wed May 12 12:32:54 EDT 2010


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 ?

/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