Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@Transactional阻止打开事务_Java_Database_Postgresql_Hibernate_Spring Data - Fatal编程技术网

Java Spring@Transactional阻止打开事务

Java Spring@Transactional阻止打开事务,java,database,postgresql,hibernate,spring-data,Java,Database,Postgresql,Hibernate,Spring Data,Iam将Spring的@Transactional注释用于数据库操作的我的DAO类/方法。 HibernateORM配置了PostgreSQL SessionFactory在配置中使用@Bean创建,并在DAO类中使用@Autowired检索 @Autowired SessionFactory sessionFactory; @Transactional(value = "myTransactionManager") public int getTotalClientsIn

Iam将Spring的
@Transactional
注释用于数据库操作的我的DAO类/方法。
Hibernate
ORM配置了
PostgreSQL

SessionFactory
在配置中使用
@Bean
创建,并在DAO类中使用
@Autowired
检索

@Autowired
SessionFactory sessionFactory;

@Transactional(value = "myTransactionManager")
public int getTotalClientsInDatabase() {
    Query countTotalClientsQuery = sessionFactory.getCurrentSession()
            .getNamedQuery(DeviceInfo.COUNT_TOTAL_CLIENTS);
    return Integer.parseInt(countTotalClientsQuery.uniqueResult().toString());
}
每当调用
getTotalClientInDatabase
时,事务总是打开的

我想阻止打开事务,因为它是一个
SELECT
(DDL)查询

如果删除了
@Transactional
,则抛出
异常,说明
会话工厂
未同步

如果添加了
readOnly=true
@Transactional(value=“myTransactionManager”,readOnly=true)


是否有任何方法可以阻止
会话
打开
事务

对于您来说,最好使用
支持的传播级别标记事务:

支持当前事务,如果没有,则以非事务方式执行 存在

因此,如果父方法不在事务上下文中,则此方法也不在事务上下文中,但可以

@Transactional(propagation=Propagation.SUPPORTS, value = "myTransactionManager")