인 경우 OpenJPA에 대한 문제를 고민하고 있습니다.OpenJPA 쿼리가 실행되고 주문이
나는 방법이 있습니다
START : 업데이트 ...
업데이트 com.sk.entity.Employee 전자
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);
}
을하지만이 같은이 내가 얻고 로그를 실행할 때 업데이트 ...
openjpa.j :
갱신 com.sk.entity.Student의 세트 ...
END ... 설정 dbc.SQL - 실행 prepstmnt 2036496738 업데이트 학생 SET ...
openjpa.jdbc.SQL - prepstmnt에게 2036496738 UPDATE 직원 SET를 실행 ... 여기
내가 아직 받고 있지 않다 :
updateEmplyoee 메서드를 호출하는 즉시 업데이트 쿼리가 실행되지 않는 이유는 무엇입니까? "END : Update ..."라는 로그 문 다음에 sql이 인쇄 된 로그를 볼 수 있습니다.
왜 STUDENT 테이블이 먼저 업데이트 되는지요? 메서드 호출 당 처음에 updateEmployee를 호출합니다.
누락 된 내용을 알고있는 사람은 누구든지 회신 해주십시오.
확인 : 또는 당신은 updateStudent 및 updateEmployee 방법에 대한 새로운 트랜잭션을 시작할 수 있습니다). 두 번째로 나는 왜 STUDENT 테이블이 먼저 지속되는지 알지 못했습니다. – SKumar
EntityManager에는 flush() 메소드가 있습니다. –
또는 새로운 트랜잭션을 시작할 수 있습니다. 응답에 추가합니다 : @TransactionAttribute (REQUIRES_NEW) public void updateStudent (...) {...} –