Hibernate中的错误简单示例初学者级别

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

无法创建sessionFactory object.java.lang.NoClassDefFoundError:javax / transaction / SystemException线程“main”中的exceptionjava.lang.ExceptionInInitializerError由以下引起:java.lang.NoClassDefFoundError:java.lang.Class.forName0中的javax / transaction / SystemException位于org.jboss.logging.logMer.logM的上的java.lang.Class.forName(未知来源)的(本机方法)org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) at com.example.ManageEmployee.main上的org.hibernate.cfg.Configuration。(Configuration.java:184)(ManageEmployee.java:17)

基本上,我首先编写POJO,并使用eclipse生成hbm.xml。 之后,我编写了管理数据库的主要function。 我试过两次,但遇到了同样的问题。

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

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

  1. 我的Eclipse项目名称: HibernateExa
  2. hibernate.cfg.xml

      com.mysql.jdbc.Driver hibernateTest jdbc:mysql://localhost:3306/hibernatetest; hibernater hibernatetest org.hibernate.dialect.MySQLDialect  create  org.hibernate.cache.HashtableCacheProvider  thread    
  3. 我的POJO是Person.java 。 使用eclipse生成Person.hbm.xml

  4. 项目包含主要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 list = new ArrayList(); list = query.list(); java.util.Iterator iter = list.iterator(); while(iter.hasNext()){ Person person = iter.next(); System.out.println("Person: \"" + person.getName() + "\", "+ person.getSurname() + "\", " + person.getAddress()); } session.getTransaction().commit(); } 
  5. 这是错误信息:

    初始SessionFactory创建失败。 java.lang.NoClassDefFoundError:javax / persistence / EntityListeners com.sample.TestPerson.main中的com.sample.SessionFactoryUtil。(SessionFactoryUtil.java:17)中的线程“main”java.lang.ExceptionInInitializerError中的exception(TestPerson.java:14 )由:org.hibernate.annotations.common.reflection.java.JavaReflectionManager中的java.lang.NoClassDefFoundError:org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:97)中的javax / persistence / EntityListeners引起.getDefaults(JavaReflectionManager.java:226)org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1331)org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1756)org.hibernate.cfg。 Com.sample.SessionFactoryUtil上的Configuration.buildSessionFactory(Configuration.java:1840)。(SessionFactoryUtil.java:13)… 1更多引起:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1中的javax.persistence.EntityListeners java.net.URLCla中的.run(未知来源) ssLoader $ 1.run(未知来源)位于java.security.AccessController.doPrivileged(本机方法)的java.net.URLClassLoader.findClass(未知来源),位于sun.misc.Launcher的java.lang.ClassLoader.loadClass(未知来源) java.lang.ClassLoader.loadClass上的$ AppClassLoader.loadClass(未知来源)(未知来源)… 7更多

基本上,这个例子可以帮助我练习如何使用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 

问题解决了! 感谢大家的建议。

所以我总结了这个问题并给出了解决方案。

错误:初始SessionFactory创建失败。 java.lang.NoClassDefFoundError。 一些jar文件正在误导。

为了设置hibernate项目,这里是jar文件的列表:

在此处输入图像描述

  1. 线程“main”org.hibernate.hql.ast.QuerySyntaxException中的exception:person未映射[来自person]因为hibernate查询基于Object,所以来自person应该来自Person。
  2. 正确的连接url:

    JDBC:MySQL的://本地主机:3306 / hibernatetest了useUnicode =真的characterEncoding = GBK

  3. 在DB中,id为INT。 但是,在Person.hbm.xml中,我将id类型更改为“long”。 因此,预期的结果出来了。

在pom.xml中添加此依赖项

  javax.transaction jta 1.1  

进行mvn clean install和部署。

其他方式:
下载此jar :项目 – >右键单击 – >构建路径 – >添加外部jar

项目 – >右键单击 – >属性 – >部署程序集 – >添加 – >从构建路径条目添加(添加此jar)

现在重新构建项目。

希望它会有所帮助。