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