我想暂时更改特定操作的事务隔离级别,而不是整个应用程序。我将如何在Play框架中执行此操作?
答案 0 :(得分:1)
我认为这不可能开箱即用。您可以更改配置中所有事务的默认隔离,但不能更改单个事务。
您可以尝试使用类似的内容(未测试):
public void doSomething() {
// (...)
org.hibernate.Session session = JPA.em().unwrap(Session.class);
int def = session.connection().getTransactionIsolation();
session.connection().setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Transaction tx = session.beginTransaction();
// Do your work. ex: session.persist(someUser);
tx.commit();
session.connection().setTransactionIsolation(def);
}
还有方法Session.doWork
,它为您提供了一个普通的连接对象,您可以使用它创建手动事务/查询。