Получить имя столбца свойства, сопоставленного с Hibernate - PullRequest
18 голосов
/ 08 января 2010

Как получить доступ к отображению Hibernate моей модели, чтобы узнать имя столбца свойства?

Имя столбца не указано в отображении, поэтому Hibernate генерирует его автоматически - я хотел бы создать собственный оператор SQL, включающий это имя столбца.

Ответы [ 4 ]

16 голосов
/ 08 января 2010

Благодаря Джерико я узнал, как это сделать:

((Column) sessionFactoryBean.getConfiguration().getClassMapping(Person.class.getName())
        .getProperty("myProperty").getColumnIterator().next()).getName();
3 голосов
/ 20 июля 2013
((AbstractEntityPersister) sessionFactory.getClassMetadata(o.getClass()))
    .getPropertyColumnNames(property)[0];
1 голос
/ 16 мая 2011

Это позволит получить одноуровневые композиты и обычные сопоставления свойств:

String columnName(String name) {
    PersistentClass mapping = configuration.getClassMapping(ExtendedPerson.class.getName());
    Property property = mapping.getProperty(name);
    if(property.isComposite()){
        Component comp = (Component) property.getValue();
        property = comp.getProperty(StringHelper.unroot(name));
        assert ! property.isComposite(); //go only one level down 
    }
    Iterator<?> columnIterator = property.getColumnIterator();
    Column col = (Column) columnIterator.next();
    assert ! columnIterator.hasNext();
    return col.getName();
}
1 голос
/ 08 января 2010

У вас должен быть доступ к объекту конфигурации Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...