我正在尝试将Kundera用作cassandra的JPA实现(即用于事务管理功能)。
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();
回滚不起作用?
第二个问题
如何在persist上执行乐观锁定(又名CAS)? 在cassandra我可以跑:
UPDATE photographer SET name = 'x' WHERE id = 1 AND update_date <= some-timestamp
使用Kundera时,我希望只有在基础商店中的其他人没有更改实体时才持久保存实体。我能这样做吗?
编辑: 我看到JPA确实支持乐观锁定,但Kundera并没有支持它。
答案 0 :(得分:0)
回滚在本机查询的情况下不起作用,因为在持久化上下文中没有映射到查询的实体对象(维护事务中对象状态所需)。
昆德拉目前不支持乐观锁定。如果您正在寻找解决方法,可以在Cassandra上使用本机查询。