QueryDsl에서 delete limit 문법을 사용할 수 없는 이유
web/JPA

QueryDsl에서 delete limit 문법을 사용할 수 없는 이유

반응형

mariadb를 사용하여 서비스 개발 중 delete로 필요한 row를 지울 때 limit을 줘서 지우려고 시도를 했었다.

 

mariadb 문법에서는 정상적으로 동작이 가능한 문법이기 때문에 당연히 제공할거라고 생각했다.

https://www.techonthenet.com/mariadb/delete_limit.php

 

하지만 JPADeleteClause에서는 limit을 찾아볼 수 없어 사용할 수 없었다.

http://www.querydsl.com/static/querydsl/4.1.4/apidocs/com/querydsl/jpa/impl/JPADeleteClause.html

 

 

그 이유는 jpa의 dialect 때문이었다. 

 

target DBMS가 변경되어도 쿼리를 수정할 필요가 없는 장점을 제공해주는 jpa의 dialect 때문에 공통 문법이 아닌 특정 specific한 dbms 문법은 제공하지 못하는 단점이 있다. 이럴 경우에는 JPQL이나 native등을 사용하거나 다른 방식으로 풀어야 할 것 같다.

 

https://stackoverflow.com/questions/67514433/querydsl-delete-query-using-limit

 

Querydsl delete query using limit

I have a one question. I want to use limit for delete query with querydsl. Is there any way? delete(wedul).where(wedul.id.eq(10)).limit(10)

stackoverflow.com

반응형