如何在Hibernate中获取模型的表名?
显然以前有一种getTableName()
方法ClassMetadata
,但它已被删除.
有一种getClassMapping(String entityName)
方法Configuration
,但我不知道如何(或者如果我应该)在我的DAO实现中使用Configuration.
我的DAO实现是HibernateGeneralGenericDao的子类.
更新:事实证明,如果没有表名,我可以做我想做的事情.但是,为了便于参考,我将保持问题公开(并在他们来时尝试答案).
它有点奇怪,但它的工作原理:
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(pClassName); if (hibernateMetadata == null) { return; } if (hibernateMetadata instanceof AbstractEntityPersister) { AbstractEntityPersister persister = (AbstractEntityPersister) hibernateMetadata; String tableName = persister.getTableName(); String[] columnNames = persister.getKeyColumnNames(); }
如果您正在使用表格注释,您可以执行以下操作:
Table table = Entity.class.getAnnotation(Table.class); String tableName = table.name();