Tutorial :Get column name of property mapped with Hibernate



Question:

How can I access the Hibernate mapping of my model to find out the column name of a property?

The column name is not specified in the mapping so Hibernate generates it automatically - I would like to create a native SQL statement including this column name.


Solution:1

Thanks to Jherico I found out how to do that:

((Column) sessionFactoryBean.getConfiguration().getClassMapping(Person.class.getName())          .getProperty("myProperty").getColumnIterator().next()).getName();  


Solution:2

((AbstractEntityPersister) sessionFactory.getClassMetadata(o.getClass()))      .getPropertyColumnNames(property)[0];  


Solution:3

You have to have access to the Hibernate Configuration object.


Solution:4

This will retrieve one-level composites and normal property mappings:

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();  }  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »