Can';t使用Hibernate获取表的列名

Can';t使用Hibernate获取表的列名,hibernate,Hibernate,我正在使用Hibernate获取表的列名。我创建了一个方法,并在执行时将我的表名传递给该方法。我获取此异常: 没有JDBC类型的方言映射:-1有人能帮我吗?谢谢 下面是Mycode: Dao类: public class Dao { public static void main(String[] args) { Dao o=new Dao(); ArrayList list=o.getTableDesc("examtype");

我正在使用Hibernate获取表的列名。我创建了一个方法,并在执行时将我的表名传递给该方法。我获取此异常: 没有JDBC类型的方言映射:-1有人能帮我吗?谢谢

下面是Mycode:

Dao类:

public class Dao {
        public static void main(String[] args) {
            Dao o=new Dao();
             ArrayList list=o.getTableDesc("examtype");
        System.out.println ("listlistlist"+list);
        }
    public  ArrayList<String>  getTableDesc(String tableName) {
            System.out.println("getFieldNames:start" + tableName);
            Object[] a;
            List<Object[]> fieldNames = new ArrayList<Object[]>();
            ArrayList<String> tabFieldNames = new ArrayList<String>();
            Session ses = HibernateUtil.getSessionFactory().openSession();
            try {
                String queryStr = "DESCRIBE "  + tableName;                 
                fieldNames = (List<Object[]>) ses.createSQLQuery(queryStr).list();
                System.out.println("fieldNamesfieldNames"+fieldNames);
                for (int i = 0; i < fieldNames.size(); i++) {
                    a = fieldNames.get(i);
                    tabFieldNames.add(a[0].toString());
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("exception " + e);
            } finally {
                ses.close();
            }
            System.out.println("getFieldNames:end" + tabFieldNames.toString());
            return tabFieldNames;
        }  
    }
公共类Dao{
公共静态void main(字符串[]args){
Dao=新的Dao();
ArrayList list=o.getTableDesc(“examtype”);
System.out.println(“列表”+列表);
}
公共ArrayList getTableDesc(字符串表名){
System.out.println(“getFieldNames:start”+tableName);
对象[]a;
List fieldNames=new ArrayList();
ArrayList tabFieldNames=新建ArrayList();
Session ses=HibernateUtil.getSessionFactory().openSession();
试一试{
字符串queryStr=“description”+表名;
fieldNames=(List)ses.createSQLQuery(queryStr.List();
System.out.println(“fieldNamesfieldNames”+字段名);
对于(int i=0;i
Hibernate.cfg.xml:

    <hibernate-configuration>
        <session-factory>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306treamisdemo</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password"></property>
            <property name="hibernate.format_sql">true</property>
            <property name="hibernate.connection.pool_size">30</property>
            <property name="hibernate.jdbc.batch_size">100</property>
            <!--<property name="hibernate.hbm2ddl.auto">update</property>-->
            <property name="hibernate.connection.isolation">2</property>
            <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>       
        </session-factory>
    </hibernate-configuration>

org.hibernate.dialogue.mysqldialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306treamisdemo
根
真的
30
100
2.
org.hibernate.cache.NoCacheProvider

更改方言的属性名称,如下所示:

name=“方言” 换成 name=“hibernate.dial”

并且还应添加映射资源=“相应(实体类相关,如同Person-entity-->Person.hbm.xml)hbm.xml文件所在的路径”


然后运行它。

我不是MySQL用户,但这可能会对您有所帮助