1

行キーでデータベースから特定のレコードを削除しようとしています。しかし、このクエリを実行しようとすると:

 Query query = em.createQuery(
            "DELETE FROM User u WHERE u.userId = :u");

 query.setParameter("u", userID).executeUpdate();

この例外が発生しました:「条件 = 行キーのクエリではサポートされていません!」。

回避策はありますか、それとも何か不足していますか?

4

3 に答える 3

2

回避策としてできることは次のとおりです。

次を使用して検索: ユーザー u = em.find(User.class, userId)

そして、 em.delete(u);

于 2012-07-26T12:02:35.220 に答える
1

また、 http://groups.google.com/group/kundera-discuss/subscribe では、 Kundera に関する問題について話し合うための迅速で優れたサポートを提供できます。

-Vivek

于 2012-07-26T13:13:54.803 に答える
1

このような削除を実行するための可能なアプローチ (現時点では Kundera バージョン 2.2 を使用する 1 つのコマンドで) は、「ネイティブ クエリ」を使用することです。次に例を示します。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("cassandra_pu");

EntityManager em = emf.createEntityManager();

// "table" is the table name (case sensitive) you name your table in Cassandra
String query = "delete from table where key = 'keyValue'";

// "TablePersistencyEntity" is the Kundera Persistency Entity (Class) for the "table" 
Query q = em.createNativeQuery(query, TablePersistencyEntity.class);
q.getResultList();

em.close();
于 2013-06-24T21:47:50.787 に答える