0

Bean クラスには、次の注釈があります。

   class User {  
        @OneToMany(targetEntity = Feedback.class,mappedBy = "user",cascade =   
        CascadeType.ALL,fetch = FetchType.LAZY)  
    private List<Feedback> feedbacks;  
        ...  
    }

フィードバックのあるユーザーを削除したい。これを入力すると:

sessionFactory.getCurrentSession().delete(
sessionFactory.getCurrentSession().get(User.class, id));

ユーザーは正常に削除されます (id は主キー)。しかし、私はすべてのユーザーを削除したいのですが、魔女は役割が「管理者」であり、次のクエリを入力すると:

String query = "DELETE from User WHERE role='" + role + "'";
    sessionFactory.getCurrentSession().createQuery(query).executeUpdate();

フィードバックへの参照がないユーザーのみが削除されます。クエリの何が問題になっていますか? 助けてください。

4

1 に答える 1

1

クエリに問題はありません。HQL 削除クエリは関連付けに「触れません」。それはJPA仕様によるものです。

削除する必要がある関連付けを指定するためのクエリを削除するための新しいキーワード CASCADE を追加するためのサポートの追加について、Hibernate Jira でこの問題を確認してください。

于 2012-06-01T22:19:49.497 に答える