在尝试使此 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
最佳答案
批量删除的语法是:
Query q = session.createQuery("delete Entity where id = :idParam");
// set params here
q.executeUpdate();
但是来自 Hibernate documentation , 不能在批量 HQL 查询中指定连接。可以在 where 子句中使用子查询,其中子查询本身可以包含连接。
关于java - 使用内部联接从 JPA 查询中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280381/