1**.为hibernate配置了C3P0之后出现了以下错误**
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;
at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:71)
at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28)
at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20)
at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:55)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:238)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:476)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:707)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:723)
at com.hg.jiagou.db.dao.sys.UserDao.<clinit>(UserDao.java:33)
at com.hg.jiagou.service.sys.UserService.competence_c(UserService.java:70)
at com.hg.jiagou.service.sys.UserService.main(UserService.java:65)
解决:之前导入的hibernate包均为5.2.*,接入C3P0的时候由于版本太高,有些方法已经过时了。而C3P0的版本较低,从而使得版本不匹配,出现问题。目前用的版本:
hibernate-core-3.3.2.GA.jar;
hibernate-c3p0-3.3.2.GA.jar;
c3p0-0.9.1.2.jar
mchange-commons-java-0.2.3.4.jar–数据库连接池,帮你统一管理和分配你项目要用到的数据库连接。
2.Hibernate是基于对象查询的,查询回来的东西是object,可以放到list里面,然后在将list转成String类型或者String数组或者封装对象上。
3.联合主键
映射代码
<class name="" table="">
<composite-id>
<key-property name="cjbh" column="cjbh" type="java.lang.Integer"/>
<key-property name="bs" column="bs" type="java.lang.String"/>
</composite-id>
<property name="gddm" column="gddm" type="java.lang.String" />
<property name="gdxm" column="gdxm" type="java.lang.String" />
<property name="bcrq" column="bcrq" type="java.lang.String" />
<property name="gsdm" column="gsdm" type="java.lang.String" />
</class>
联合主键是将几个数据项联合起来当做主键来使用,(一般情况下不用)composite-id里面的东西当做主键。
4.配置的时候出现单元调试的时候代码可以运行,而部署服务器之后没法运行,每次都建不了session工厂?
原因:由于maven发布jar包的时候会自动下载依赖包,因此产生了jar包冲突。
5.在使用多对一的时候,由于配置问题一直出错?
配置代码
<many-to-one name="deptDto" column="dept_id" lazy="false" ></many-to-one>
注意要设置懒加载,不然的话读不到数据。其他的默认设置就行。
这篇博客汇总了关于Hibernate的常见问题及解决办法,包括C3P0版本不匹配导致的错误,对象查询操作,联合主键的映射,部署时session工厂无法创建,以及多对一配置中的懒加载问题。通过调整 Hibernate 和 C3P0 的版本,理解 Hibernate 对象查询的特性,正确设置联合主键,解决依赖冲突以及配置懒加载,可以有效解决这些问题。

6770

被折叠的 条评论
为什么被折叠?



