我创建了一个HBM文件。在代码中,我有一个可用的实际列名(通过属性文件)。我想获得该列的关联属性名称以形成HQL。是否有一个由Hibernate提供的API来获取映射/绑定到HBM文件中的DB列的属性名称?
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:0)
我唯一能找到的是来自version 3.5 documentation的引用,至少在JPA中,目前还没有这样的API。但我找不到更新的东西,所以似乎还没有这样的API。
截至今天,JPA 2元模型没有提供任何便利 访问与物理模型有关的关系信息。它 预计这将在未来的版本中得到解决 说明书
当然,Hibernate必须在某个地方拥有这些信息,至少在相反的方向,但我不认为他们通过API公开它,这是供公众使用的。
在构造sql语句时,您可以通过调试hibernate代码来查看从哪里获取信息。