2014-10-28 1 views
0

Мне было интересно, есть ли способ выполнить обновление, отличное от метода merge(), есть много случаев, когда мне просто нужно обновить одно поле в базе данных и для этого я должен вывести весь объект из db со всеми его отношениями, установить новое новое значение и затем вызвать метод слияния, передающий модифицированный объект. Он отлично работает, но это вызывает некоторые проблемы с производительностью, поскольку мне приходится излишне приносить некоторые данные из базы данных до обновления. Как я вижу, было бы лучше просто выполнить обновление, не внося никаких данных в память.Альтернативы методу merge() EntityManager

Кто-нибудь уже думал об этом и придумал альтернативный и более эффективный способ сделать это?

ответ

0

Просто выполните «Исходный запрос» с помощью UPDATE или используйте JPD UPDATE (согласно комментарию uaiHebert). Это может повлиять на несколько записей. Он поставляется с условием, что обработчики событий не вызываются, и любые экземпляры, уже находящиеся в памяти, не будут обновляться автоматически, а только хранилище данных. См. http://www.datanucleus.org/products/accessplatform_4_0/jpa/jpql.html#update-syntax

+1

Вы также можете сделать обновление с помощью JPQL. знак равно – uaiHebert