Оптимистическая блокировка с Kundera JPA

Я пытаюсь использовать Kundera в качестве реализации JPA поверх cassandra (а именно для возможностей управления транзакциями).

2 вопроса:

ПЕРВЫЙ ВОПРОС

правда ли, что управление транзакциями не поддерживает собственные запросы? то есть, если я делаю:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("piccandra", getCassandraProperties());

EntityManager em = emf.createEntityManager();
em.setFlushMode(FlushModeType.COMMIT); 
em.getTransaction().begin();
Query q = em.createNativeQuery("insert into photographer (photographer_id, photographer_name) values ('id1', 'name1')");
q.executeUpdate();
em.getTransaction().rollback();

откат не пройдет?

ВТОРОЙ ВОПРОС

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

UPDATE photographer SET name = 'x' WHERE id = 1 AND update_date <= some-timestamp

При использовании Кундеры я хочу сохранить сущность только в том случае, если она не была изменена кем-то еще в базовом хранилище. Я могу это сделать?

РЕДАКТИРОВАТЬ: я вижу, что JPA поддерживает оптимистическую блокировку, но Кундера не реализует ее.


person asafd    schedule 25.05.2016    source источник
comment
Зачем вам использовать NATIVE-запрос, если вам нужна оптимистичная обработка? Без разницы. Оптимистичная обработка — это использование API персистентности.   -  person    schedule 25.05.2016
comment
если бы я мог использовать собственные запросы, я мог бы использовать утверждение из вопроса для обработки блокировки. На самом деле я предпочитаю не использовать API персистентности именно из-за таких ограничений.   -  person asafd    schedule 25.05.2016


Ответы (1)


  • Откаты не будут работать в случае нативных запросов, так как объект сущности, сопоставленный с запросом, не доступен в контексте постоянства (требуется для сохранения состояния объекта в транзакциях).

  • Кундера пока не поддерживает оптимистическую блокировку. Если вы ищете обходной путь, вы можете использовать собственные запросы в Cassandra.

person karthik manchala    schedule 26.05.2016