Я пытаюсь создать новый сеанс внутри метода, который, вероятно, будет вызываться из других методов, где сеанс уже создан, например:
//Method "Main" scope
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
tx.begin();
(...)
MyObject object = new MyObject();
object.myMethod();
(...)
tx.commit();
И myMethod ():
//Session session = factory.openSession(); //Doesnt works.
Session session = factory.getCurrentSession();
Мне не нравится это решение, потому что myMehthod может быть вызван из любой области, возможно, нет открытого сеанса.Возможно, новый класс для обработки соединений с методом для получения сеанса (получения текущего, если он открыт, или создания нового, если нет).
В любом случае у меня есть другая проблема: возможно, мне нужны изменения myMehotd ()Метод в моей базе данных, прежде чем совершить основную транзакцию.Но я не могу зафиксировать транзакцию в области действия метода, поскольку возможно, что работа еще не завершена в это время (метод вызывающей стороны все еще выполняет работу с БД, однажды вызванной методом myMethod).
Или, возможно, мне необходимо выполнить фиксациюизменения в методе myMethod.
Можно ли создавать вложенные транзакции?