ssh整合报错org.hibernate.HibernateException: createQuery is not valid without active transaction

本文探讨了在使用Hibernate框架时遇到的org.hibernate.HibernateException:createQueryisnotvalidwithoutactivetransaction错误。详细分析了current_session_context_class属性设置为thread导致的问题,并提供了解决方案。

只有一个事物的时候有<property name="current_session_context_class">thread</property>不会报错,当再次加个事物的时候就会报错org.hibernate.HibernateException: createQuery is not valid without active transaction,原来"current_session_context_class"属性的意思是,设置当前会话的上下文环境,如果设置为thread,那么同一线程则共享同一session会话。因此通过getCurrentSession()得到的session,是同一线程上的session,而不是Spring管理的那个能够自动开启事务的session。去除掉该属性就好了。

### 达梦数据库与Spring Data JPA集成时遇到的Hibernate异常问题解决方案 当在达梦数据库环境中使用Spring Data JPA时,如果遇到了`org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set`错误,这通常是因为未指定合适的Hibernate方言配置。 对于达梦数据库而言,在`application.yml`文件中的`spring.jpa.properties.hibernate.dialect`属性应该被设置为支持达梦数据库的具体实现类。由于官方文档可能不会直接提供针对达梦的支持,因此建议自定义一个继承自标准SQL方言并适配达梦特性的方言类[^3]。 下面是一个简单的例子来展示如何创建这样一个特定于达梦数据库的方言: ```java import org.hibernate.dialect.SQLServerDialect; // 假设这里导入其他必要的包 public class DamengDatabaseDialect extends SQLServerDialect { @Override protected void registerFunctions() { super.registerFunctions(); // 可能需要注册一些特殊的函数或调整默认行为以适应达梦特性 } @Override public String getTableTypeString() { return ""; } } ``` 接着,在项目的配置文件中加入如下内容以便让应用程序知道要使用的具体方言: ```yaml spring: datasource: url: jdbc:dmsql://localhost:5236/your_database_name?charset=UTF-8&useSSL=false username: your_username password: your_password driver-class-name: dm.jdbc.driver.DmDriver jpa: show-sql: true hibernate: ddl-auto: update properties: hibernate: dialect: com.yourpackage.DamengDatabaseDialect # 自定义方言路径 ``` 通过上述方式设定好正确的数据库连接参数以及对应的Hibernate方言之后,应当能够有效避免因缺少适当方言而导致的相关异常情况发生。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值