2011-03-02 5 views

답변

2

이식성이 문제가되지 않는다면 데이터베이스 관련 네이티브 쿼리를 사용할 수 있습니다.

  • 오라클 : em.createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName WHERE ROWNUM <= 5)").executeUpdate();

  • MySQL의 : em.createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName LIMIT 5)").executeUpdate();

ROWNUM & LIMIT은 각각 오라클 & MySQL을위한 쿼리에서 결과의 수를 제한하는 데 사용됩니다.

사용중인 데이터베이스에 대해 언급하지 않았습니다. 제공된 샘플 코드가 도움이 될 수 있으므로 이에 따라 변경하십시오.

+0

이것은 도움이되고 답변이지만 플랫폼 독립적 인 방식으로이 작업을 수행해야했습니다. –

+0

하위 쿼리를 사용하여 Criteria API를 사용할 수 있습니다. 하위 쿼리에서 setMaxResults (크기)가 가져올 결과 수를 제한하고 기본 쿼리에서 해당 레코드를 업데이트 할 수 있습니다. 그렇지 않으면 두 개의 쿼리, 하나는 특정 수의 레코드를 검색 한 다음 업데이트 할 수 있습니다. –

관련 문제