hibernate中 查询表名和字段名
此文转自:http://blog.csdn.net/delva/archive/2008/04/24/2322386.aspx
?
? hibernate中 查询表名和字段名 收藏
/**
?* hibernate 实体、属性查询表名、字段名工具类
?*
?*/
?
import java.util.Iterator;
import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.Table;
?
public class HibernateParter
{
?? private static Configuration hibernateConf;
?
?? private static Configuration getHibernateConf()
?? {
??????? if (hibernateConf == null)
?????? {
?????????? // return new Configuration().configure();
?????????? return new Configuration();
??????? }
??????? ?return hibernateConf;
?? ?}
?
??? private static PersistentClass getPersistentClass(Class clazz)
??? {
??????? ?synchronized (HibernateParter.class)
???????? {
??????????? ? PersistentClass pc = getHibernateConf().getClassMapping( clazz.getName());
???????????? ?if (pc == null) {
???????????? ?hibernateConf = getHibernateConf().addClass(clazz);
???????????? ?pc = getHibernateConf().getClassMapping(clazz.getName());
????????? }
?????????? return pc;
??? }
?}
?
?/**
? * 获取实体对应的表名
? * @param clazz 实体类
? * @return 表名
? */
?public static String getTableName(Class clazz)
{
? return getPersistentClass(clazz).getTable().getName();
?}
?
?/**
? * 获取实体对应表的主键字段名称
? * @param clazz 实体类
? * @return 主键字段名称
? */
?public static String getPkColumnName(Class clazz)
?{
? Table table = getPersistentClass(clazz).getTable();
? return table.getPrimaryKey().getColumn(0).getName();
?}
?
?/**
? * 通过实体类和属性,获取实体类属性对应的表字段名称
? * @param clazz 实体类
? * @param propertyName 属性名称
? * @return 字段名称
? */
?public static String getColumnName(Class clazz, String propertyName)
{
??? ?PersistentClass persistentClass = getPersistentClass(clazz);
???? Property property = persistentClass.getProperty(propertyName);
?????Iterator it = property.getColumnIterator();
???? if (it.hasNext())
???? {??
??????? ?Column column= (Column)it.next();??
???????? return column.getName();
?? ? }
??? ?return null;
?}
}
?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/delva/archive/2008/04/24/2322386.aspx
?
?
另外有人给出下面的解决方法:
?