hibernate问题汇总

这篇博客汇总了关于Hibernate的常见问题及解决办法,包括C3P0版本不匹配导致的错误,对象查询操作,联合主键的映射,部署时session工厂无法创建,以及多对一配置中的懒加载问题。通过调整 Hibernate 和 C3P0 的版本,理解 Hibernate 对象查询的特性,正确设置联合主键,解决依赖冲突以及配置懒加载,可以有效解决这些问题。

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>

注意要设置懒加载,不然的话读不到数据。其他的默认设置就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值