[jbosstools-dev] Unpredictable NamingStrategy interpretation

Dmitry Geraskov dgeraskov at exadel.com
Thu May 13 03:45:39 EDT 2010


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
>>>
>>>        
>>      
>    
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jbosstools-dev/attachments/20100513/ad8da830/attachment.html 


More information about the jbosstools-dev mailing list