一、java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.LocalSessionFactoryBeanjava
缺乏spring-orm jar包,以下:mysql
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>spring
二、org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.NoClassDefFoundError: org/hibernate/engine/transaction/spi/TransactionContextsql
hibernate-core的jar包中org/hibernate/engine/transaction/spi/下没有TransactionContext类session
因为你导入的为hibernate5的jar包,例如:mybatis
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.1.Final</version>
</dependency>ui
而hibernate5中没有该类,而spring-hibernate.xml中却配置的是hibernate4,例如spa
<!-- 配置事务管理器 -->
<bean name="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>.net
只有spring4.2及以上支持hibernate5,若是使用的是spring4.2如下,则最高可选择hibernate4.3及如下hibernate
因此根据你的spring-core版本修改引入hibernate-core版本或者能够修改spring-hibernate.xml文件配置
方式1:使用spring3则修改hibernate-core jar版本
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.21.Final</version>
</dependency>
方式2:使用spring4.2及以上则修改配置文件
<bean name="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
http://stackoverflow.com/questions/32898333/hibernate-spring-exception-when-trying-to-create-a-transaction
三、找不到jconsole-1.8.0.jar和tools-1.8.0.jar
由于引入了druid.jar,依赖于这连个包
方法1:修改pom.xml让其不依赖于这两个包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.22</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>jconsole</artifactId>
<version>1.8.0</version>
</exclusion>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>tools</artifactId>
<version>1.8.0</version>
</exclusion>
</exclusions>
</dependency>
方法2:去指定仓库寻找
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
六、输出hql语句到控制台
只须要在配置文件修改
设置hibernate.format_sql=true
而后修改sessionfactory的配置
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
</props>
</property>
控制台打印出的hql以下图
用过mybatis的同窗都知道,mybatis控制台输出的sql语句和mysql中相似,而且看获得传入的参数,能够很方便的copy sql语句到mysql,看sql语句执行效率,可是hql给人感受,不是那么清晰明了。
只须要在log4j.properties添加以下语句:
#为了显示参数
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
这样控制台就会显示绑定参数了
还能够配置查看查询中命名参数的值,以下
log4j.logger.org.hibernate.engine.QueryParameters=DEBUG
log4j.logger.org.hibernate.engine.query.HQLQueryPlan=DEBUG
更多详细,请戳这里 。
后续有其余问题再添加。
如有错误,望纠正。