Кундера для Кассандры - Удаление записи по ключу строки

Я пытаюсь удалить конкретную запись из базы данных по ключу строки. Но когда я пытаюсь выполнить этот запрос:

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

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

Я получил это исключение: "Условие = не поддерживается для запроса по ключу строки!".

Есть ли обходной путь, или я что-то упустил?

3 ответа

Решение

Что вы можете сделать в качестве обходного пути:

Найти с помощью: User u = em.find(User.class, userId)

а затем em.delete(u);

Возможный подход к выполнению такого удаления (в одной команде с использованием Kundera, версия 2.2 на данный момент) заключается в использовании "собственного запроса", например:

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();

Кроме того, http://groups.google.com/group/kundera-discuss/subscribe может оказать вам быструю и лучшую поддержку для обсуждения вопросов, связанных с Кундера.

-Vivek

Другие вопросы по тегам