hibernate.cfg.xml如下<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">system</property> <property name="connection.password"></property> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
 
  <property name="hibernate.hbm2ddl.auto" >create</property>
<mapping resource="net/hncu/hibernate/Product.hbm.xml" />
</session-factory>
</hibernate-configuration>Product.hbm.xml如下<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="net.hncu.hibernate.Product"> <id name="id">
<generator class="native"></generator>
</id> <property name="name"></property>
</class></hibernate-mapping>持久层如下
package net.hncu.hibernate;public class Product
{
private String id;
private String name;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}创建表的java类如下package net.hncu.hibernate;import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;public class CreateDB
{
public static void main(String[] args)
{
Configuration cfg=new Configuration().configure();

SchemaExport sExport=new SchemaExport(cfg);

sExport.create(true,true);
}
}我的数据库是oracle11g,按照理论,应该有sql语句在控制台输出,然后数据库中会建立一个Product的表,问题是居然没有表生成,之前我用的是hibernate3.jar,运行 CreateDB类后什么反应也没有。后来在网上查了资料,说oracle11g需要高版本的hibernate3.6final,于是我就干脆去hiberbate的官网下了个hibernate4.0final,是前天刚发布的。我用它替换掉原有的hibernate3.jar,运行CreateDB类就报错了,错误如下Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
at net.hncu.hibernate.CreateDB.main(CreateDB.java:10)
Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ReflectionManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 1 more
神啊,救救我吧~~~~

解决方案 »

  1.   

     你看看你的JDK版本,可能要1.6的(这个好像是个小BUG)
     还有就是你看你的包是否全部导入了
     
      

  2.   

    java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ReflectionManager不是说的很清楚了么?异常信息:类没有发现的异常。
    缺少org.hibernate.annotations.common.reflection.ReflectionManager类,找找这个类是在什么包里面,放进去不就行了,这么简单的问题。
      

  3.   

    缺少注解的class类。。包版本有问题吧。。换一个版本。。看看jar中是否有ReflectionManager的class
      

  4.   

    你用过hibernate吗?配置文件里连个table都没有让它建甚。解析hql时候没有table可以默认是类名,建表不行还有hibernate需要4-5个支持包,不懂就别乱换。