【 TiDB 使用环境】测试
【 TiDB 版本】8.10
【复现路径】hibernate配置数据源
【遇到的问题:问题现象及影响】
org.hibernate.HibernateException: createCriteria is not valid without active transaction
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:297)
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
怎么这个session…getCurrentSession(),以及createCriteria总是报错呢,跟事务相关?还是版本api不支持呢?
hibernate 有外联Session管理的问题,这个要看怎么控制的。
另外 tidb 有自己独立的 jdbc connector ,可以更换后在试试
1 个赞
我配置了sessionfactory,我的hibernate是3.1版本,不知道是不是也有问题,配置是这样的
<bean id="tidbHibernateSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="tidbMpaperDataSource" />
<property name="annotatedClasses">
<list>
<value>com.wap.sh.mpaper.model.NewsContent</value>
<value>com.wap.sh.mpaper.model.NewsTVInfo</value>
<value>com.wap.sh.mpaper.model.NewsSourceType</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.show_sql=false
hibernate.format_sql=true
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.cache.use_second_level_cache=false
hibernate.cache.use_query_cache=false
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.current_session_context_class=thread
</value>
</property>
<!-- *SPRING统一管理二级缓存配置 -->
<property name="entityCacheStrategies">
<props>
<prop key="com.wap.sh.mpaper.model.NewsContent">nonstrict-read-write</prop>
<prop key="com.wap.sh.mpaper.model.NewsTVInfo">nonstrict-read-write</prop>
<prop key="com.wap.sh.mpaper.model.NewsSourceType">nonstrict-read-write</prop>
</props>
</property>
</bean>
自己看吧,需要
@Transactional
或者显示的开启事务。