[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