Кундера для Кассандры - Удаление записи по ключу строки
Я пытаюсь удалить конкретную запись из базы данных по ключу строки. Но когда я пытаюсь выполнить этот запрос:
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