和很多人一样,我也遇到了类似的问题,但我似乎找不出我的具体案例中出了什么问题。我正在进行一个简单的数据库调用来测试数据库连接,而Hibernate抛出了以下异常:
Exception in thread "main" org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(Spring
我有一个适用于MS-SQL (SQL Azure)的SQL语句:
BEGIN TRANSACTION
DECLARE @UserId INT
SET @UserId = 1
select @UserId as some_value
COMMIT
(我的实际SQL更复杂,这只是一个示例)。
或者更具体地说,我如何让Spring将这个T-SQL发送到DB引擎以供执行?
例外的是UncategorizedSQLException。
我在我的项目中使用了Spring3.2和Hibernate 4。当我查询表时,我得到一条"No Session found for current thread“消息。我尝试使用@Transactional注解(它成功了),但我不想将@Transactional应用到每个服务实现中。
有没有别的办法?
换句话说,“我怎样才能在不使用@Transaction的情况下执行简单的”插入“操作呢?”
谢谢..。
我刚开始做一个Spring-data,Hibernate,MySQL,JPA项目。我切换到了spring-data,这样我就不必担心手动创建查询了。
我注意到在使用spring-data时不需要使用@Transactional,因为我也尝试过不带注释的查询。
我应该/不应该使用@Transactional注解有什么特别的原因吗?
作品:
@Transactional
public List listStudentsBySchool(long id) {
return repository.findByClasses_School_Id(id);
}
同样有效:
public List
我有一个小的Spring Boot应用程序,依赖于spring-boot-starter-web、spring-boot-starter-data-jpa和postgresql。
我能够使用@Transactional注释并使用JPA获取实体并将其保存到数据库中。但是,如果我通过注册同步来添加afterCommit/afterCompletion挂钩,它会给出一个IllegalStateException,说明Transaction synchronization is not active。
TransactionSynchronizationManager.registerSynchron
Spring Data Neo4j 。
无论如何,我希望在我的项目中使用延迟加载。毕竟,如果我不能依靠getter每次都能得到我想要的东西,那么拥有getter还有什么意义呢?
因此,为了使我的域模型是延迟加载的,我正在考虑将它们注释为spring组件,并向我的getter添加逻辑,以便在我尝试访问字段时延迟加载字段。我知道这会将我的模型强烈地耦合到neo4j,但我更希望有这种强耦合,而不是没有延迟加载。
不过,在我开始将我的所有模型转换为使用它之前,我想看看除了紧密耦合之外,是否有人能告诉我在这样做的时候有什么问题。我的模型也可以作为Spring组件使用,spring数据应该不会有任何问题,