如何在ebean中创建自定义插入



我需要填充一个带有大量数据的表,因此我不想找到相关的对象,而只是放置它们的数字值。为此,我会构建一个简单的查询IE:

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:错误解析SQL,找不到以下选择关键字:插入article_category(aptif_id,category_id)value(2,12)]

如何使用Ebean调用真正的原始查询?

实际上我找到了一个解决方案,它是com.avaje.ebean.SqlUpdate,可用于删除,更新和插入语句:

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);

编辑

也有类似的方法可以选择行,而无需从db的相应模型: com.avaje.ebean.SqlQuery

您也可以使用普通的旧JDBC连接和语句而不是Ebean。

类似的东西:

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();

相关内容

  • 没有找到相关文章

最新更新