如何获取绑定到HBM中的列的属性的名称?

时间:2015-11-10 05:39:07

标签: java hibernate

我创建了一个HBM文件。在代码中,我有一个可用的实际列名(通过属性文件)。我想获得该列的关联属性名称以形成HQL。是否有一个由Hibernate提供的API来获取映射/绑定到HBM文件中的DB列的属性名称?

2 个答案:

答案 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代码来查看从哪里获取信息。