Я ударяю головой по проблеме с OpenJPA.Когда выполняется запрос OpenJPA и что такое заказ
У меня есть метод:
public void update() {
System.out.println("START: Update...");
updateEmployee(employee);
updateStudent(student);
System.out.println("END: Update...");
}
updateEmployee(employee) {
employeeDAO.update(employee);
}
updateStudent(student) {
studentDAO.update(student);
}
Но когда я запускаю это я получаю журналы, как это:
START: Обновление ...
обновление com.sk.entity.Employee е набор ...
обновление com.sk.entity.Student, настроил ...
END: обновление ...
openjpa.j dbc.SQL - выполнение prepstmnt 2036496738 UPDATE СТУДЕНТ SET ...
openjpa.jdbc.SQL - выполнение prepstmnt 2036496738 UPDATE EMPLOYEE SET ...
Вот я до сих пор не получаю:
Почему запросы обновления не выполняются, как только я вызываю метод updateEmplyoee. Вы можете увидеть журнал, который будет напечатан sql после моего оператора журнала «END: Update ...»
Почему таблица STUDENT обновляется в первую очередь. В соответствии с методом, вызывающим я вызываю updateEmployee сначала
Может ли кто-нибудь ответить, если вы знаете, что мне не хватает.
Хорошо, как я могу убедиться, что, когда я называю updateEmployee и updateStudent, JPA должны сохраняться все не-сохранялись изменения в базе данных (не держать в памяти). И, во-вторых, я до сих пор не понял, почему таблица STUDENT сохраняется в первую очередь. – SKumar
EntityManager имеет метод flush(). –
Или вы можете начать новую транзакцию, я добавлю ее в ответ: @TransactionAttribute (REQUIRES_NEW) public void updateStudent (...) {...} –