2

jpqlを使用して次の一括削除を実行しようとしています:

            " DELETE " +
            " FROM AutAnt aa " +
            "   JOIN aa.person p " +
            "   JOIN p.employees e" +  
            " WHERE e = :employess " +
            "   AND (" +
            "       aa.dateFrom BETWEEN :dateStart AND :dateEnd" +
            "       OR" +
            "       aa.dateTor BETWEEN :dataStart AND :dateEnd" +
            "   )");

しかし、私はこのエラーが発生しています:

unexpected token: JOIN

JPA ドキュメントには、「クエリによる削除では、通常のクエリと同じ JPQL 構文が使用されますが、1 つの例外があります。クエリ文字列は、select キーワードではなく delete キーワードで始まります」と記載されています。

完全に機能する次の選択クエリがあります。

            " SELECT aa " +
            " FROM AutAnt aa " +
            "   JOIN aa.person p " +
            "   JOIN p.employees e" +  
            " WHERE e = :employess " +
            "   AND (" +
            "       aa.dateFrom BETWEEN :dateStart AND :dateEnd" +
            "       OR" +
            "       aa.dateTor BETWEEN :dataStart AND :dateEnd" +
            "   )");

削除クエリの最初のステートメントを"DELETE aa"に変更すると、別の例外が発生します。

これは Hibernate のバグですか、それとも何か不足していますか。

乾杯!

4

1 に答える 1

3
于 2016-02-10T11:53:31.463 に答える