(异常)Hibernate的动态模型
来源:互联网 发布:北京程序员培训 编辑:程序博客网 时间:2024/05/17 04:02
解决办法
不用自带的Hibernate包 自己下载Hibernate包导入
最近出现这样的错误
2015-5-10 12:24:16 org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
2015-5-10 12:24:16 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.4.Final}
2015-5-10 12:24:16 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
2015-5-10 12:24:16 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
2015-5-10 12:24:16 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
2015-5-10 12:24:16 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
2015-5-10 12:24:16 org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: org/vo/UserTable.hbm.xml
2015-5-10 12:24:16 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
2015-5-10 12:24:16 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
2015-5-10 12:24:16 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
2015-5-10 12:24:16 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
2015-5-10 12:24:16 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] at URL [jdbc:sqlserver://localhost:1433;DatabaseName=Test9_4]
2015-5-10 12:24:16 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=sa, password=****}
2015-5-10 12:24:17 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect
2015-5-10 12:24:17 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
2015-5-10 12:24:17 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
%%%% Error Creating SessionFactory %%%%
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.hibernate.annotations.common.util.ReflectHelper.classForName(ReflectHelper.java:143)
at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.classForName(JavaReflectionManager.java:117)
at org.hibernate.envers.configuration.RevisionInfoConfiguration.configure(RevisionInfoConfiguration.java:262)
at org.hibernate.envers.configuration.AuditConfiguration.<init>(AuditConfiguration.java:102)
at org.hibernate.envers.configuration.AuditConfiguration.getFor(AuditConfiguration.java:165)
at org.hibernate.envers.event.EnversIntegrator.integrate(EnversIntegrator.java:64)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
at org.util.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:34)
at org.test.HibernateTest.getCurrentSession(HibernateTest.java:26)
at org.test.HibernateTest.main(HibernateTest.java:13)
2015-5-10 12:24:17 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
2015-5-10 12:24:17 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
2015-5-10 12:24:17 org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: org/vo/UserTable.hbm.xml
2015-5-10 12:24:17 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
2015-5-10 12:24:17 org.hibernate.cfg.Configuration$MappingsImpl addImport
INFO: HHH000071: Duplicate import: UserTable -> UserTable
%%%% Error Creating SessionFactory %%%%
org.hibernate.InvalidMappingException: Could not parse mapping document from resource org/vo/UserTable.hbm.xml
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3409)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3398)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3386)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1341)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1731)
at org.util.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:73)
at org.util.HibernateSessionFactory.getSession(HibernateSessionFactory.java:55)
at org.test.HibernateTest.getCurrentSession(HibernateTest.java:26)
at org.test.HibernateTest.main(HibernateTest.java:13)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping UserTable
at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2574)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:172)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3406)
... 8 more
Exception in thread "main" java.lang.NullPointerException
at org.test.HibernateTest.saveUser(HibernateTest.java:38)
at org.test.HibernateTest.main(HibernateTest.java:14)
同学为类包的调用错误
原先我调用的为Hibernate 4.1 core Library和 Hibernate 4.1 Advanced Support librarys
这个是Myeclipse 10.7自带的
后来下载了hibernate-release-4.3.9.Final官网的这个
通过这样引入
复制压缩包下 C:\Users\Administrator\Desktop\hibernate-release-4.3.9.Final\lib\required的 所有必须jar包
然后
最后引入到下方类包统一起来
这样就把Hibernate官方版引入进去了
然后运行结果可以运行
运行结果如下
2015-5-10 12:34:00 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2015-5-10 12:34:00 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.9.Final}
2015-5-10 12:34:00 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
2015-5-10 12:34:00 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
2015-5-10 12:34:00 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
2015-5-10 12:34:00 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
2015-5-10 12:34:00 org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: org/vo/UserTable.hbm.xml
2015-5-10 12:34:00 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
2015-5-10 12:34:00 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
2015-5-10 12:34:00 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] at URL [jdbc:sqlserver://localhost:1433;databaseName=Test9_4]
2015-5-10 12:34:00 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=sa, password=****}
2015-5-10 12:34:00 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
2015-5-10 12:34:00 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
2015-5-10 12:34:01 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect
2015-5-10 12:34:01 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
2015-5-10 12:34:01 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: Test9_4.dbo.userTable
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [id, username, password]
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [pk_usertable]
2015-5-10 12:34:02 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
数据库类
这样数据就插入进去了
Test应当这么写
package org.test;import java.util.*;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.util.HibernateSessionFactory;//import org.vo.UserTale;//import org.vo.UserTable;public class HibernateTest {public Session session;public static void main(String[] args) {//HibernateTest ht = new HibernateTest();//创建类对象//ht.getCurrentSession();//获得session对象Configuration cfg=new Configuration();SessionFactory sessionFactory=cfg.configure().buildSessionFactory();Session session=sessionFactory.openSession();Transaction ts = session.beginTransaction();Map user = new HashMap();user.put("username", "yabber");user.put("password", "123456");session.save("org.vo.UserTable", user);ts.commit();//ht.saveUser();//ht.saveUser();//插入一条记录//ht.updateUser(); //修改该条记录//ht.queryUser();//查看数据库结果//ht.deleteUser(); //删除该条记录//System.out.println("删除该条记录后结果======");//ht.queryUser();//查看数据库结果//ht.closeSession(); //关闭session}//获得session方法public void getCurrentSession(){//调用 HibernateSessionFactory 的 getSession 方法创建 Session 对象session = HibernateSessionFactory.getSession();}//关闭session方法public void closeSession(){if(session!=null){HibernateSessionFactory.closeSession();// 关闭Session}}//插入一条记录方法public void saveUser(){//保存一个UserTable对象Transaction ts = session.beginTransaction();Map user = new HashMap();user.put("username", "yabber");user.put("password", "123456");session.save("org.vo.UserTable", user);ts.commit();}//修改这条记录方法public void updateUser(){//更新一个UserTable对象Transaction ts = session.beginTransaction();Map user = new HashMap();user = (Map)session.get("org.vo.UserTable", 18);// 获取id为18的记录user.put("password", "654321");session.update("org.vo.UserTable", user);ts.commit();}//查询数据库结果方法public void queryUser(){Query query = session.createQuery("from UserTable"); //查询记录List list = query.list();for(int i=0;i<list.size();i++){Map user = (Map)list.get(i);System.out.println(user.get("username"));System.out.println(user.get("password"));}}//删除该条记录方法public void deleteUser(){Transaction ts = session.beginTransaction();Map user = new HashMap();user = (Map)session.get("org.vo.UserTable", 18);session.delete("org.vo.UserTable", user);ts.commit();}}UserTable.hbm.xml
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping> <class entity-name="org.vo.UserTable" table="userTable"> <id name="id" column="id" type="integer"> <generator class="identity"/> </id> <property name="username" type="string" column="username"/> <property name="password" type="string" column="password"/> </class></hibernate-mapping>
Hibernate.hbm.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"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="hbm2ddl.auto">update</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=Test9_4</property> <property name="connection.username">sa</property> <property name="connection.password">123</property> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <mapping resource="org/vo/UserTable.hbm.xml" /> </session-factory></hibernate-configuration>
动态类是MAP映射 而非POJO映射
关于介绍MAP映射的文章
1 http://blog.csdn.net/meng2602956882/article/details/22914493
2 http://www.360doc.com/content/14/0329/19/281812_364737677.shtml
3 http://blog.csdn.net/opnmzxcvb/article/details/4785569
- (异常)Hibernate的动态模型
- Hibernate动态模型
- Hibernate 动态模型
- hibernate动态模型(Dynamic models)
- hibernate动态模型(Dynamic models)
- 利用hibernate的动态模型进行多表查询
- hibernate的几个异常
- Hibernate级联的异常
- 有效的Java异常模型
- Hibernate之软件的模型
- 怪异的hibernate WrongClassException异常
- Hibernate中常见的异常
- hibernate常见的错误异常
- 有关Hibernate的异常处理
- Hibernate异常的一个问题
- hibernate 捕获低层的异常
- hibernate异常NonUniqueObjectException的处理
- 关于hibernate的LazyInitializationException异常
- Phoenix(十一)二级索引之— —性能优化篇
- HTTP、Canvas、Paint
- 最大和问题
- ARM嵌入式开发中的GCC内联汇编简介
- Linux(Ubuntu)下面SecureCRT 完全破解
- (异常)Hibernate的动态模型
- Shell基础-环境变量配置文件-其他配置文件和登录信息
- php绘图--简单的验证码
- java基础——多线程
- RequireJS入门(一)
- JavaWeb_Cookie与Session
- 安装Office 2013后的HTML图标问题记录
- 管道选取排序命令
- 第一次写博客完全不懂,先记录一下自学linux入门时遇到的困难,