2014-04-24 9 views
0

JPA 리포지토리 삭제에 대해이 SQL을 올바르게 가져 오려고하면 오류가 계속 발생합니다. 올바른 구문은 무엇입니까?내부 조인이 포함 된 JPA 쿼리에서 삭제

@Query("delete * from TS t inner join TSC c ON t.tenantId = c.id where t.id= ?1 AND c.endDate < ?2") 
    void deleteTSWithExpiredDate(Long id, Date date); 

Caused by: java.lang.IllegalArgumentException: node to traverse cannot be null! 
    at org.hibernate.hql.internal.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:63) 

@Query("delete t.* from TS t inner join TSC c ON t.tenantId = c.id where t.id= ?1 AND c.endDate < ?2") 
     void deleteTSWithExpiredDate(Long id, Date date); 

expecting IDENT, found '*' near line 1, column 10 [delete t.* 

일괄 삭제하는 구문은

 @Query("delete t from TS t inner join TSC c ON t.tenantId = c.id where t.id= ?1 AND c.endDate < ?2") 
      void deleteTSWithExpiredDate(Long id, Date date); 

unexpected token: from near line 1, column 10 [delete t 
+0

안녕 마이크, 해결책이 있습니까? 나는 같은 문제에 직면 해있다. – Stephane

답변

0

또 다른 :

Query q = session.createQuery("delete Entity where id = :idParam"); 
// set params here 
q.executeUpdate(); 

그러나 Hibernate documentation에서는 벌크 HQL 쿼리에 조인을 지정할 수 없습니다. 하위 쿼리 자체는 조인을 포함 할 수있는 where 절에서 하위 쿼리를 사용할 수 있습니다.

관련 문제