学习hibernate,报错。请高手看看!

pangpang514 2011-10-24 01:25:41
1.java文件
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.test.hibernate.model.Student;


public class StudentTest {

/**
* @param args
*/
public static void main(String[] args) {
Student student = new Student();
student.setId(1);
student.setName("test");
student.setAge(25);

Configuration cf = new Configuration();
SessionFactory sf = cf.configure().buildSessionFactory(); Session session = sf.openSession();
session.beginTransaction();
session.save(student);
session.getTransaction().commit();

session.close();
sf.close();

}
}

2.Student.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 package="com.pzq.hibernate.model">
<class name="Student" table="Student">
<id name="id" column="id"></id>
<property name="name" column="name"/>
<property name="age" column="age"/>
</class>
</hibernate-mapping>

3.hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>

<!-- JDBC connection pool (use the built-in) -->
<!-- <property name="connection.pool_size">1</property> -->

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- Enable Hibernate's automatic session context management -->
<!-- <property name="current_session_context_class">thread</property> -->

<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

<!-- Drop and re-create the database schema on startup -->
<!--<property name="hbm2ddl.auto">update</property> -->


<mapping resource="com/test/hibernate/model/Student.hbm.xml"/>

</session-factory>
</hibernate-configuration>
4.异常见下
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96)
at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1385)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
at StudentTest.main(StudentTest.java:20)
Caused by: java.lang.ClassNotFoundException: javax.persistence.EntityListeners
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 5 more
...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghost123cc 2011-10-24
  • 打赏
  • 举报
回复
javax/persistence/EntityListeners 少包了, 没有这个包, 所以这个方法报错了。
oxcow 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yefei679 的回复:]

引用 4 楼 oxcow 的回复:

引用楼主 pangpang514 的回复:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners


缺少包 persistence.jar


应该是缺少ejb3-persistence.jar这个包吧,但……
[/Quote]

看版本了,那个都行。使用hibernate-jpa-2.0-api-1.0.0.Final.jar这个也行。这个不管用不用注解都是必须的!
yefei679 2011-10-24
  • 打赏
  • 举报
回复
LZ用的hibernate是什么版本的?其实那个类在hibernate-jpa-2.0-api-1.0.0.Final.jar通过添加这个jar包也是可以的,因为hibernate需要jpa的支持的。
休谱诺斯 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oxcow 的回复:]
引用楼主 pangpang514 的回复:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners


缺少包 persistence.jar
[/Quote]
貌似是这个问题。。。
yefei679 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oxcow 的回复:]

引用楼主 pangpang514 的回复:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners


缺少包 persistence.jar
[/Quote]

应该是缺少ejb3-persistence.jar这个包吧,但似乎LZ没有用到annotation?
oxcow 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 pangpang514 的回复:]
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
[/Quote]

缺少包 persistence.jar
yefei679 2011-10-24
  • 打赏
  • 举报
回复
你试试把我上面红色的那个Driver改成大写D试试?
yefei679 2011-10-24
  • 打赏
  • 举报
回复
3.hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>

<!-- JDBC connection pool (use the built-in) -->
<!-- <property name="connection.pool_size">1</property> -->

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- Enable Hibernate's automatic session context management -->
<!-- <property name="current_session_context_class">thread</property> -->

<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

<!-- Drop and re-create the database schema on startup -->
<!--<property name="hbm2ddl.auto">update</property> -->


<mapping resource="com/test/hibernate/model/Student.hbm.xml"/>

</session-factory>
</hibernate-configuration>
login726 2011-10-24
  • 打赏
  • 举报
回复
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>是不是没有写端口号阿?
pangpang514 2011-10-24
  • 打赏
  • 举报
回复
只是个自己按着书写的一段代码,没有用annotation!!!
[Quote=引用 4 楼 oxcow 的回复:]
引用楼主 pangpang514 的回复:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners


缺少包 persistence.jar
[/Quote]
Thomas.Sir 2011-10-24
  • 打赏
  • 举报
回复
路过看看!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧