Hibernate中的错误简单示例初学者级别 [英] Error in Hibernate simple example Beginner level

查看:146
本文介绍了Hibernate中的错误简单示例初学者级别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了学习hibernate,我写了两个练习例子。但是,它们都具有相同的错误,如下所示:


无法创建sessionFactory object.java.lang.NoClassDefFoundError:
javax / transaction / SystemException线程main中的异常
java.lang.ExceptionInInitializerError导致:
java.lang.NoClassDefFoundError:javax / transaction / SystemException at
java.lang.Class.forName0(本地方法)

java.lang.Class.forName(未知源)
org.jboss.logging.Logger.getMessageLogger(Logger.java:2248)at
org.jboss.logging (Logger.java:2214)在
org.hibernate.cfg.Configuration。(Configuration.java:184)at
com.example.ManageEmployee.main(ManageEmployee.java:17)

基本上,我先写POJO,然后用eclipse生成hbm.xml。之后,我写了主要功能来管理数据库。我试了两次,但得到同样的问题。



有人可以给我建议来解决这个问题吗?在此之前,使用JDBC构建一个项目,但这太复杂了。所以我需要学习hibernate。谢谢。

补充(在这个hibernate示例项目中的详细信息):


  1. 我的Eclipse项目名称: HibernateExa

  2. hibernate.cfg.xml



     < session-factory> 

    <! - hibernate dialect - >

    < property name =hibernate.connection.driver_class> com.mysql.jdbc.Driver< / property>
    < property name =hibernate.connection.password> hibernateTest< / property>

    < property name =hibernate.connection.url> jdbc:mysql:// localhost:3306 / hibernatetest;< / property>
    < property name =hibernate.connection.username> hibernater< / property>
    < property name =hibernate.default_schema> hibernatetest< / property>
    < property name =hibernate.dialect> org.hibernate.dialect.MySQLDialect< / property>

    <! - 自动模式创建(开始) - >
    < property name =hibernate.hbm2ddl.auto>建立< / property>
    <! - 简单内存缓存 - >
    < property name =hibernate.cache.provider_class> org.hibernate.cache.HashtableCacheProvider< / property>
    <! - 启用Hibernate的自动会话上下文管理 - >
    < property name =current_session_context_class>线程< / property>

    <! - 映射具有外部依赖关系的文件 - >
    < mapping resource =com / sample / Person.hbm.xml/>


    < / session-factory>


  3. 我的POJO的 Person.java 即可。使用eclipse生成 Person.hbm.xml

  4. 项目包含主要功能:TestPerson.java

    public static void main(String [] args){

      Session session = SessionFactoryUtil.getSessionFactory() .getCurrentSession(); 

    session.beginTransaction();

    createPerson(session);
    queryPerson(session);


    $ b $ public static void createPerson(Session session){
    Person person = new Person();

    person.setName(Jack);
    person.setSurname(Yu);
    person.setAddress(白宫);

    session.save(person);


    private static void queryPerson(Session session){
    Query query = session.createQuery(from person);
    列表< Person> list = new ArrayList< Person>();
    list = query.list();
    java.util.Iterator< Person> iter = list.iterator(); (iter.hasNext()){
    Person person = iter.next();


    System.out.println(Person:\+ person.getName()+\,+ person.getSurname()+\,
    + person。 getAddress());
    }

    session.getTransaction()。commit();
    }


  5. 以下是错误信息:
    $ b 初始SessionFactory创建失败java.lang.NoClassDefFoundError:javax / persistence / EntityListeners
    线程main中的异常java.lang.ExceptionInInitializerError $ b $ com com.sample.SessionFactoryUtil。(SessionFactoryUtil.java:17)
    at com.sample.TestPerson.main(TestPerson.java :14)
    由java.lang.NoClassDefFoundError引发:javax / persistence / EntityListeners $ b $在org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:97)
    at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
    at org.hibernate.cfg.Configuration.secondPassCompile(Con在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)中

    在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1756)
    $ b $ $ b at com.sample.SessionFactoryUtil。(SessionFactoryUtil.java:13)
    ... 1 more
    导致:java.lang.ClassNotFoundException:javax.persistence.EntityListeners $ b $在java。 net.URLClassLoader $ 1.run(未知源)
    在java.net.URLClassLoader $ 1.run(未知源)$ b $在java.security.AccessController.doPrivileged(本地方法)$ b $在java。 net.URLClassLoader.findClass(未知源)$ b $在java.lang.ClassLoader.loadClass(未知源)
    在sun.misc.Launcher $ AppClassLoader.loadClass(未知源)
    在java。 lang.ClassLoader.loadClass(Unknown Source)
    ... 7 more


基本上,这个例子可以帮助我练习如何使用hibernate。不过,我在开始创建项目时遇到了问题。



希望我能很快解决这个问题。请给点建议,谢谢。

请确保你的lib文件夹中包含所有这些jar文件:

  lib / antlr.jar 
lib / cglib.jar
lib / asm.jar
lib / commons-collections.jar
lib / commons-logging.jar
lib / jta.jar
lib / dom4j.jar
lib / log4j.jar
lib / hibernate3 .jar


In order to learn hibernate, I write two examples for practising. However, both of them have same error as following:

Failed to create sessionFactory object.java.lang.NoClassDefFoundError: javax/transaction/SystemException Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jboss.logging.Logger.getMessageLogger(Logger.java:2248) at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) at org.hibernate.cfg.Configuration.(Configuration.java:184) at com.example.ManageEmployee.main(ManageEmployee.java:17)

Basically, I write POJO first, and using eclipse generates hbm.xml. After than, I write main function to manage the database. I tried twice but got same problem.

Could someone give me advice to solve this problem? Before that, using JDBC builds a project, but that is too complex. So I need to learn hibernate. Thank you.

Supplement(detail in this hibernate example project):

  1. My Eclipse project Name: HibernateExa
  2. hibernate.cfg.xml:

    <session-factory>
    
        <!-- hibernate dialect -->
    
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">hibernateTest</property>
    
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatetest;</property>
        <property name="hibernate.connection.username">hibernater</property>
        <property name="hibernate.default_schema">hibernatetest</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
        <!-- Automatic schema creation(begin) -->
        <property name="hibernate.hbm2ddl.auto">create</property>
        <!-- Simple memory-only cache -->
        <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
    
        <!-- mapping files with external dependencies -->
        <mapping resource="com/sample/Person.hbm.xml"/>
    
    
    </session-factory>
    

  3. My POJO is Person.java. Using eclipse generates Person.hbm.xml.

  4. Project contains main function: TestPerson.java

    public static void main(String [] args){

        Session session = SessionFactoryUtil.getSessionFactory().getCurrentSession();
    
        session.beginTransaction();
    
        createPerson(session);
        queryPerson(session);
    
    }
    
    public static void createPerson(Session session){
        Person person = new Person();
    
        person.setName("Jack");
        person.setSurname("Yu");
        person.setAddress("White House");
    
        session.save(person);
    }
    
    private static void queryPerson(Session session){
        Query query = session.createQuery("from person");
        List<Person> list = new ArrayList<Person>();
        list = query.list();
        java.util.Iterator<Person> iter = list.iterator();
    
        while(iter.hasNext()){
            Person person = iter.next();
            System.out.println("Person: \"" + person.getName() + "\", "+ person.getSurname() + "\", "
                    + person.getAddress());
        }
    
        session.getTransaction().commit();
    }
    

  5. Here is error info:

    Initial SessionFactory creation failed. java.lang.NoClassDefFoundError: javax/persistence/EntityListeners Exception in thread "main" java.lang.ExceptionInInitializerError at com.sample.SessionFactoryUtil.(SessionFactoryUtil.java:17) at com.sample.TestPerson.main(TestPerson.java:14) Caused by: java.lang.NoClassDefFoundError: javax/persistence/EntityListeners at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:97) at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1331) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1756) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840) at com.sample.SessionFactoryUtil.(SessionFactoryUtil.java:13) ... 1 more Caused by: java.lang.ClassNotFoundException: javax.persistence.EntityListeners at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 7 more

Basically, this example could help me to practise how to using hibernate. Nevertheless, I got problem at the very beginning that create the project.

Hopefully, I could solve this problem soon. Please some advice, Thank you.

解决方案

Please make sure you have all of this jar files in your lib folder:

lib/antlr.jar
lib/cglib.jar
lib/asm.jar
lib/commons-collections.jar
lib/commons-logging.jar
lib/jta.jar
lib/dom4j.jar
lib/log4j.jar
lib/hibernate3.jar

这篇关于Hibernate中的错误简单示例初学者级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆