如何訪問我的模型的Hibernate映射以查找屬性的列名稱?獲取使用Hibernate映射的屬性的列名稱
在映射中未指定列名,以便Hibernate自動生成它 - 我想創建一個包含此列名的本機SQL語句。
如何訪問我的模型的Hibernate映射以查找屬性的列名稱?獲取使用Hibernate映射的屬性的列名稱
在映射中未指定列名,以便Hibernate自動生成它 - 我想創建一個包含此列名的本機SQL語句。
感謝Jherico我發現瞭如何做到這一點:
((Column) sessionFactoryBean.getConfiguration().getClassMapping(Person.class.getName())
.getProperty("myProperty").getColumnIterator().next()).getName();
您必須有權訪問Hibernate配置對象。
應該在春天可能環境...... – 2010-01-07 21:22:56
這將檢索一個層次的複合材料和常規屬性映射:
String columnName(String name) {
PersistentClass mapping = configuration.getClassMapping(ExtendedPerson.class.getName());
Property property = mapping.getProperty(name);
if(property.isComposite()){
Component comp = (Component) property.getValue();
property = comp.getProperty(StringHelper.unroot(name));
assert ! property.isComposite(); //go only one level down
}
Iterator<?> columnIterator = property.getColumnIterator();
Column col = (Column) columnIterator.next();
assert ! columnIterator.hasNext();
return col.getName();
}
((AbstractEntityPersister) sessionFactory.getClassMetadata(o.getClass()))
.getPropertyColumnNames(property)[0];
在'o'是代理的情況下,您應該使用'Hibernate.getClass(o)'而不是'o.getClass()'。 – 2014-06-24 19:50:48
什麼是「sessionFactoryBean」?我確定它不是sessionFactory。 – instanceOfObject 2014-02-06 12:10:15
它可以是sessionFactory或SessionFactoryBean,它取決於版本 – Shilan 2016-03-29 14:26:45