java - 如何获取绑定(bind)到 HBM 列的属性的名称?

标签 java hibernate

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

最佳答案

有一个半官方的 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;
    }
  }
}

关于java - 如何获取绑定(bind)到 HBM 列的属性的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33623626/

相关文章:

java - 如何不使用 Hibernate Envers 审计连接表和相关实体?

java - 如何使用 Lucene 存储值对

java - @Autowired 在 Spring Security 中不起作用

java - 将 SQL 转换为 HQL where 子句

java - 使用 tynamo-security 模块在 Tapestry Web 应用程序中实现身份验证功能的问题

java - 如何在@ManyToOne 字段上创建@Index?

java - 将 DAO 类制作为可比较类型是一个好的做法吗

JavaFX 2.1 消息框

java - Java中潜在的内存泄漏,这段代码是否会导致内存泄漏?

java - 如何使用辅助方法过滤映射集合以防止 nullPointerException