저는 EclipseLink 공급자를 사용하여 mysql 데이터베이스와 통신하고 있습니다. 내 응용 프로그램의 영역에서 라이브러리가 DB와 일치하지 않는 쿼리 데이터를 반환하고있는 것으로 나타났습니다.Java EclipseLink 지속성 라이브러리의 잘못된 데이터가 반환되었습니다.
쿼리는 다음과 같습니다
@NamedQuery(name = "EmailAddress.findAll", query = "SELECT e FROM EmailAddress e")
이 쿼리가 올바른지, 나는 그 확신합니다. 내가 그 쿼리를 실행하는 데 사용하고 코드입니다 : 나는 그것을 배열은 3 년, 약 1 시간을 EMAILADDRESS 목록의 내용을 볼 수 있도록
EntityTransaction entr = em.getTransaction();
entr.begin();
emailAddresses = em.createNamedQuery("EmailAddress.findAll").getResultList();
em.close()
나는 가까이에 중단 점을 넣었습니다 잘못 채워집니다. 조금 더 배경 - 이름을 나열하는 표가 있는데, 이름을 클릭하면 대화 상자가 열리고 이름을 변경할 수 있으며 대화 상자를 닫으면 테이블이 업데이트되고 (DB와 UI), 때로는 UI가 잘못 업데이트되고 편집 된 이름이 업데이트되지 않습니다. 업데이트는 위 블록을 포함한 코드를 실행합니다. 코드가 실행되기 전에 데이터베이스가 올바르게 업데이트됩니다. 배열이 올바르게 채워지지 않은 것입니다.
이 문제와 관련된 문제가 있거나 다른 아이디어가있는 사람이 있습니까?
많은 도움을 주셨습니다. 코드의 나머지 부분을 보지 않고 말을
저는 분명히 열어서 쿼리/업데이트를 닫습니다. 그리고 나는 각각의 메소드를 올바르게 호출하고 있다고 생각합니다. 여러 시나리오에서 비슷한 일을하지만 여러 테이블에서 이런 일이 발생했습니다. 같은 이름을 계속 편집하면 값은 심지어 3 또는 4 편집 이전의 값으로 점프하는 경우가 있습니다. 이는 무언가가 지속성 라이브러리에 의해 캐시되고 있음을 암시합니다. – chvck