java - 使用内部联接从 JPA 查询中删除

标签 java mysql sql hibernate 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 

最佳答案

批量删除的语法是:

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/

相关文章:

java - 用 Short 和 int 重载

SQL 内连接排序性能较慢

MySQL 列名标准/约定

php - 如何制作表格并保存url和html代码?

sql - 如何编写更新查询以使用 SQL 数据源更新两个表?

java - 在 Java 中根据用户请求从数组中删除/读取特定元素

java - Spring Security 自定义身份验证要求

java - org.dozer.MappingException : No read or write method found for field

javascript - 哪些 MySQL 驱动程序可用于 node.js?

mysql - 选择结果数高于 x 的位置