[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6005) DefaultComponentSafeNamingStrategy breaks @ElementCollection of @Embeddables

Artem Troitskiy (JIRA) noreply at atlassian.com
Fri Mar 11 10:57:08 EST 2011


DefaultComponentSafeNamingStrategy breaks @ElementCollection of @Embeddables
----------------------------------------------------------------------------

                 Key: HHH-6005
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6005
             Project: Hibernate Core
          Issue Type: Bug
          Components: core
    Affects Versions: 3.5.0-Final
            Reporter: Artem Troitskiy
            Priority: Minor


{{DefaultComponentSafeNamingStrategy}} is incompatible with {{@ElementCollection}} of {{@Embeddable}} objects.

Given the following classes

{code:java}
@Entity
public class Foo {
    @ElementCollection
    private List<Bar> bars;
    ...
}

@Embeddable
public class Bar {
    private String name;
    ...
}
{code}

and DefaultComponentSafeNamingStrategy as a naming strategy, Hibernate generates the schema with the following incorrect table:

bq. create table Foo_bars (Foo_id bigint not null, bars_collection&&element_name varchar(255))

{{.collection&&element.}} is an internal placeholder that should be removed before use of property name. Other naming strategies effectively remove it by using the part of property name after the last {{.}}, but {{DefaultComponentSafeNamingStrategy}} doesn't, it just replaces {{.}} with {{_}}.

Here is a workaround:

{code:java}
public class FixedDefaultComponentSafeNamingStrategy extends DefaultComponentSafeNamingStrategy {
    @Override
    public String propertyToColumnName(String propertyName) {
        return super.propertyToColumnName(propertyName.replace(".collection&&element.", "."));
    }
}
{code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list