2015-12-11 3 views
0

Я использую kundera-cassandra V3.2 и хочу обновить сущность с помощью метода merge.Kundera cassandra - облегченная транзакция в методе слияния

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

Есть ли возможность использовать облегченные сделки (IF условие) при вызове этого метода или я должен создать запрос на обновление вручную?

+0

Если Kundera претендует на совместимость с JPA, тогда вам потребуется транзакция вокруг нее tx.begin, tx.commit. –

+0

Спасибо за комет, но легкая транзакция не должна ничего делать с управлением транзакциями jpa, на мой взгляд. Легкая транзакция используется, если вы расширяете свой запрос с помощью дополнительного предложения. Мой вопрос: существует ли какая-либо реализация от Kundera для добавления такого предложения при вызове метода слияния или сохранения EntityManager. –

+0

какой запрос? у вас нет запроса в том, что вы опубликовали. Слияние будет выполнять «UPDATE ...», «DELETE ...», «INSERT ...» и т. Д., Зависящие от того, что вы изменили в «entity» –

ответ

2

В 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 для получения дополнительной информации.

Смежные вопросы