kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 biesior
biesior
Вопрос

Как создать пользовательский запрос INSERT INTO в Ebean?

Мне нужно заполнить таблицу большим количеством данных, поэтому я не хочу искать связанные объекты, а просто поместить их числовые значения. Для этого я построю простой запрос, т.е:

INSERT INTO article_category (article_id, category_id) VALUES (2,12);

В любом случае я не могу найти способ сделать это с помощью Ebean, я пытался:

RawSql rawSql = RawSqlBuilder
    .parse("INSERT INTO article_category (article_id, category_id) VALUES (2,12)")
    .create();

однако это приводит к исключению:

[RuntimeException: Error parsing sql, can not find SELECT keyword in:INSERT INTO article_category (article_id, category_id) VALUES (2,12)]

Как я могу вызвать действительно сырой запрос с помощью Ebean?

9 2012-10-22T18:23:58+00:00 2
Программирование
playframework
playframework-2.0
ebean
Решение / Ответ
 biesior
biesior
23-го октября 2012 в 7:00
2012-10-23T07:00:42+00:00
Дополнительно
Источник
Редактировать
#17528514

На самом деле я нашел решение, это com.avaje.ebean.SqlUpdate, который можно использовать для операторов DELETES, UPDATES и INSERTS:

SqlUpdate down = Ebean.createSqlUpdate("DELETE FROM table_name WHERE id = 123");
down.execute(); 

SqlUpdate insert = Ebean.createSqlUpdate("INSERT INTO article_category (article_id, category_id) VALUES (2,12)");
insert.execute(); 

и т.д. Конечно, он также позволяет задавать именованные параметры в запросах (пример из его API):

String s = "UPDATE f_topic set post_count = :count where id = :id"
SqlUpdate update = Ebean.createSqlUpdate(s);
update.setParameter("id", 1);
update.setParameter("count", 50);

int modifiedCount = Ebean.execute(update);

Редактировать.

Существует также аналогичный метод для выбора строк без соответствующих моделей из БД: com.avaje.ebean.SqlQuery

 biesior
biesior
Редактировал ответ 27-го марта 2016 в 4:01
23
0
 ndeverge
ndeverge
22-го октября 2012 в 8:04
2012-10-22T20:04:06+00:00
Дополнительно
Источник
Редактировать
#17528513

Вместо Ebean вы также можете использовать обычное старое соединение и оператор JDBC.

Что-то похожее на это:

Connection connection = play.db.DB.getConnection();

Statement stmt = connection.createStatement();
stmt.executeUpdate("INSERT INTO article_category (article_id, category_id) VALUES (2,12)");

stmt.close();
8
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией