source

JPA Cache: 보기의 테이블이 업데이트된 후 db 보기에서 업데이트된 결과를 가져오는 방법

factcode 2023. 9. 26. 22:36
반응형

JPA Cache: 보기의 테이블이 업데이트된 후 db 보기에서 업데이트된 결과를 가져오는 방법

db(mariadb)에서 나는 여러 테이블의 조인에서 오는 데이터의 선택으로 정의된 뷰를 가지고 있습니다.

    CREATE VIEW `obiettivideco` AS 
    SELECT 
      `codici`.`id` AS  `idc`,
      `codici`.`codice` AS `codice`,
      `codici`.`sub` AS `sub`,
      `codici`.`descrizione` AS `descrizionec`,
      `eo`.`id` AS `ide`,
      `eo`.`Descrizione` AS `descrizionee`,
      `obiettivi`.`id` AS `ido`,
      `obiettivi`.`inizio` AS `inizio`,
      `obiettivi`.`fine` AS `fine`,
      `obiettivi`.`valore` AS `valore` 
    FROM (
      (`obiettivi` JOIN `eo` 
      ON((`obiettivi`.`eo` = `eo`.`id`))) JOIN `codici` 
      ON((`obiettivi`.`codice` = `codici`.`id`))
);

그 계층 위에서 나는 MVC 패턴의 모델을 갖기 위해 테이블(그리고 뷰에서도)로부터 엔티티를 생성했습니다.그런 다음 관리되는 콩으로 만든 컨트롤러에 보기(JSF)가 위의 보기를 선택할 수 있도록 하는 몇 가지 논리를 썼습니다.데이터를 수정해야 할 때 테이블 엔티티(예: 테이블 엔티티)의 도움으로 변경 사항이 지속됩니다.

        em.getTransaction().begin();
        em.persist(obiettivo);
        em.getTransaction().commit();

여기서 오비에티보는 클래스 오비에티비의 개체이며, 이는 다시 오비에티비표를 모델링하는 개체입니다.문제는 오비에티비데코 선택의 업데이트를 표시하려고 하면 발생합니다. jpa 캐시는 오비에티보의 변화가 오비에티비데코를 구식으로 만들 것이라는 것을 모르는 것 같습니다.

문제를 해결한 엔티티 관리자 새로 고침과 관련된 답변을 찾기까지 며칠을 보냈습니다.

    q.setHint(QueryHints.REFRESH, true);
    obiettivideco = (List<Obiettivideco>) q.getResultList();

나의 낮은 평판 때문에 나는 그 답변에 찬성표를 던질 수 없었기 때문에 다른 사람이 두통을 피할 수 있기를 바라며 이미 대답한 질문을 올립니다.

언급URL : https://stackoverflow.com/questions/43356457/jpa-cache-how-do-you-get-updated-results-from-a-db-view-after-a-table-in-view-i

반응형