2015-11-10 2 views
3

Я создал файл HBM. В коде у меня есть фактическое имя столбца, доступное для меня (через файл свойств). Я хочу получить связанное имя свойства этого столбца, чтобы сформировать HQL. Существует ли API, предоставляемый Hibernate, чтобы получить имя свойства, которое отображается/привязано к столбцу DB в файле HBM?Как получить имя свойства, связанного с столбцом в HBM?

ответ

0

Единственное, что я могу найти, это цитата из version 3.5 documentation, в которой говорится, что по крайней мере в JPA в настоящее время нет такого API. Но я не мог найти ничего нового, так что, похоже, до сих пор нет такого API.

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

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

Возможно, вы, возможно, сделали некоторые взломы, отлаживая спящий код, чтобы увидеть, откуда они получают информацию, при построении операторов sql.

2

Существует полу официальный API для доступа к метаданным классов:

Class<?> entityClass = ...; 
String columnName = ...; 
EntityManager em = ...; 
final SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) 
    ((Session) em.getDelegate()).getSessionFactory(); 
AbstractEntityPersister persister = (AbstractEntityPersister) sessionFactory.getClassMetadata(entityClass); 
for (String propertyName : persister.getPropertyNames()) { 
    for (String propertyColumnName : persister.getPropertyColumnNames(propertyName)) { 
    if (columnName.equalsIgnoreCase(propertyColumnName)) { 
     return propertyName; 
    } 
    } 
} 
+0

Эта работа для меня. Просто я хочу. Отлично – MonkeyJLuffy

Смежные вопросы