【问题标题】:Kundera cassandra - lightweight transaction in merge methodKundera cassandra - 合并方法中的轻量级事务
【发布时间】:2015-12-14 17:11:28
【问题描述】:

我正在使用 kundera-cassandra V3.2 并希望使用方法合并更新实体。

this.getManager().merge(entity); // this.getManager is a javax.persistence.EntityManager

调用此方法时是否可以使用轻量级事务(IF 子句)或者我必须手动创建更新查询?

【问题讨论】:

  • 如果 Kundera 声称符合 JPA,那么您需要围绕它进行交易 tx.begin, tx.commit。
  • 感谢commet,但我认为轻量级事务与jpa事务管理无关。如果您使用附加子句扩展查询,则使用轻量级事务。我的问题:在调用 EntityManager 的 merge 或 persist 方法时,Kundera 是否有任何实现来添加这样的子句。
  • 什么查询?您对发布的内容没有任何疑问。合并将执行“UPDATE ...”、“DELETE ...”、“INSERT ...”等,具体取决于您在“entity”中所做的更改
  • 我没有查询 - 我也不需要。这只是为了描述 cassandra 上下文中轻量级事务的含义。抱歉,“查询”可能是错误的术语->“陈述”更好

标签: jpa cassandra kundera


【解决方案1】:

在 Kundera 中,通过createNativeQuery 方法支持轻量级事务。没有与轻量级事务合并的直接方法。

示例代码:

String query = "UPDATE \"PERSONCASSANDRA\" SET \"PERSON_NAME\" = 'Pragalbh' WHERE \"PERSON_ID\" = '4' IF \"PERSON_NAME\" = 'Karthik'";
Query q = entityManager.createNativeQuery(query, PersonCassandra.class);
q.executeUpdate();

请查看此test-case 了解更多信息。

【讨论】:

    最近更新 更多