Обновление activejdbc в предложении не работает - PullRequest
0 голосов
/ 05 июня 2019

Я хочу обновить несколько записей, используя activejdbc

Person.update("name = ?, last_name = ?", "name in ?", "Steve", "Johnson", "jagadeesh,varma,jampana,vikash");

без ошибок, но в db

ничего не обновляется

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Это не проблема инфраструктуры ActiveJDBC, а скорее проблема, которая не поддерживается стандартом JDBC. Пожалуйста, смотрите эту страницу для получения дополнительной информации: http://javalite.io/in_clause

Вам нужно будет объединить строки:

List names = Util.list("jagadeesh","varma","jampana","vikash");
List<Person> people = Person.update(name = ?, last_name = ?", "name IN ('" + Util.join(names, "', '") + "')", "John", "Doe");

К сожалению, это может открыть возможность для атаки SQL-инъекцией, если вы создаете веб-приложение - так что будьте осторожны.

1 голос
/ 05 июня 2019

Проблема связана с предложением in.Вы передаете "jagadeesh, varma, jampana, vikash" not "('jagadeesh', 'varma', 'jampana', 'vikash')" в соответствии с требованием в

Это решение должно решить вашу проблему:

Person.update("name = ?, last_name = ?", "name in ('jagadeesh','varma','jampana','vikash')", "Steve", "Johnson");

Подробнее

...