hibernate annotation运行时出现org.hibernate.HibernateException: 'hibernate.dialect' must be set whe
hibernateannotation运行时出现org.hibernate.HibernateException:'hibernate.dialect'mustbeset...
hibernate annotation运行时出现org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available的错误
做简单的Hibernate测试学习时发生的。按照文档里面的配置操作等来写。
声明。用hbm.xml这个配置文件映射,再在cfg.xml里配置好是可行的,运行结果正确。
但是。一用annotation就出错。
包的导入应该没错,除了Hibernate的一般包。annotation三个包:ejb-persistence.jar
hibernate-common-annotation.jar 和hibernate-annotation.jar
大家帮忙啦。。谢谢
new AnnotationConfigration().configure().buildSessionFactory();后
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:953)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:596)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at TeacherTest.main(TeacherTest.java:18)
大家看看。。有什么建议 展开
做简单的Hibernate测试学习时发生的。按照文档里面的配置操作等来写。
声明。用hbm.xml这个配置文件映射,再在cfg.xml里配置好是可行的,运行结果正确。
但是。一用annotation就出错。
包的导入应该没错,除了Hibernate的一般包。annotation三个包:ejb-persistence.jar
hibernate-common-annotation.jar 和hibernate-annotation.jar
大家帮忙啦。。谢谢
new AnnotationConfigration().configure().buildSessionFactory();后
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:953)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:596)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at TeacherTest.main(TeacherTest.java:18)
大家看看。。有什么建议 展开
4个回答
展开全部
你的sessionFactory是这样设的吗?
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<!-- 批量跟新或删除时使用 -->
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<!-- hibernate事物隔离级别 值: 1 2 4 8 (效率由高到低) 如果不设置则默认依赖数据库
1 - read_uncommitted 会出现dirty read, phantom-read(幻读), non-repeatable read问题
2 - read_committed(hibernate,oracle默认级别) 不会出现dirty read,因为只有另一个事务提交才会读出结果,但仍会出现 non-repearable read, phantom-read
4 - repeatable_read(MySQL默认级别) 可重复读,通过向数据上加锁实现
8 - serializable 序列化,解决一切问题
-->
<prop key="hibernate.collection.isolation">${hibernate.collection.isolation}</prop>
<!-- 二级缓存 查询缓存 -->
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
</props>
</property>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<!-- 批量跟新或删除时使用 -->
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<!-- hibernate事物隔离级别 值: 1 2 4 8 (效率由高到低) 如果不设置则默认依赖数据库
1 - read_uncommitted 会出现dirty read, phantom-read(幻读), non-repeatable read问题
2 - read_committed(hibernate,oracle默认级别) 不会出现dirty read,因为只有另一个事务提交才会读出结果,但仍会出现 non-repearable read, phantom-read
4 - repeatable_read(MySQL默认级别) 可重复读,通过向数据上加锁实现
8 - serializable 序列化,解决一切问题
-->
<prop key="hibernate.collection.isolation">${hibernate.collection.isolation}</prop>
<!-- 二级缓存 查询缓存 -->
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
</props>
</property>
展开全部
将new Configuration().buildSessionFactory() 改为new Configuration().configure().buildSessionFactory() 试试
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的hibernate.perperty中没有设置“hibernate.dialect”这项吗?
参看:
1.hibernate.dialect org.hibernate.dialect.MySQLDialect
2.hibernate.connection.driver_class com.mysql.jdbc.Driver
3.hibernate.connection.url jdbc:mysql://localhost:3306/test
4.hibernate.connection.username root
5.hibernate.connection.password dodo
参看:
1.hibernate.dialect org.hibernate.dialect.MySQLDialect
2.hibernate.connection.driver_class com.mysql.jdbc.Driver
3.hibernate.connection.url jdbc:mysql://localhost:3306/test
4.hibernate.connection.username root
5.hibernate.connection.password dodo
参考资料: http://softor.javaeye.com/blog/750249
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意2楼,查看是否是方言配对了,不同数据库的方言是不同的,hibernate就是通过方言来分辨不同数据库的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询