
SQLStatementResult::getGeneratedIds 메소드는 JPA에서 INSERT, UPDATE, DELETE 문을 실행한 후 생성된 ID를 가져올 수 있는 방법을 제공합니다.
이 메소드를 사용하려면, EntityManager의 executeQuery() 메소드를 사용하여 SQL Statement를 실행한 후, 결과를 SQLStatementResult 객체에 담아야 합니다.
그 후, SQLStatementResult 객체의 getGeneratedIds() 메소드를 호출하여 생성된 ID를 가져올 수 있습니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
java
EntityManager entityManager = EntityManagerFactory.createEntityManager();
SQLStatementResult result = entityManager.createQuery("INSERT INTO 테이블명 (컬럼명) VALUES (:값)").setParameter("값", 값).executeQuery();
List generatedIds = result.getGeneratedIds();
이 메소드를 사용할 때 주의할 점은, getGeneratedIds() 메소드는 SQL Statement의 결과에서 생성된 ID를 가져오기 때문에, INSERT 문을 실행한 후에만 사용할 수 있습니다.
또한, getGeneratedIds() 메소드는 여러 개의 ID를 가져올 수 있으므로, List 타입의 변수를 사용하여 결과를 받을 수 있습니다.
또한, getGeneratedIds() 메소드는 SQL Statement의 결과에서 생성된 ID를 가져오기 때문에, UPDATE, DELETE 문을 실행한 후에는 사용할 수 없습니다.
이 메소드를 사용할 때 주의할 점은, SQL Statement의 결과에서 생성된 ID를 가져오기 때문에, INSERT 문을 실행한 후에만 사용할 수 있습니다.
또한, getGeneratedIds() 메소드는 여러 개의 ID를 가져올 수 있으므로, List 타입의 변수를 사용하여 결과를 받을 수 있습니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
java
EntityManager entityManager = EntityManagerFactory.createEntityManager();
SQLStatementResult result = entityManager.createQuery("INSERT INTO 테이블명 (컬럼명) VALUES (:값)").setParameter("값", 값).executeQuery();
List generatedIds = result.getGeneratedIds();
for (Long id : generatedIds) {
System.out.println(id);
}
2025-05-13 13:16