【问题标题】:PlayFramework 2 + Ebean - raw Sql Update query - makes no effect on dbPlayFramework 2 + Ebean - 原始 Sql 更新查询 - 对 db 没有影响
【发布时间】:2012-12-18 12:53:59
【问题描述】:

我有一个 play framework 2.0.4 应用程序,它想修改 db 中的行。

我需要将数据库中的“少数”消息更新为“已打开”状态(阅读消息) 我是这样做的

    String sql = " UPDATE message  SET opened = true, opened_date = now() "
            +" WHERE id_profile_to = :id1 AND id_profile_from = :id2 AND opened IS NOT true";
    SqlUpdate update = Ebean.createSqlUpdate(sql);
    update.setParameter("id1", myProfileId);
    update.setParameter("id2", conversationProfileId);        
    int modifiedCount = update.execute();

我已修改 postgresql 以记录所有查询。

modifiedCount 是实际修改的行数 - 但查询是在事务中。 在数据库中完成查询后,会出现 ROLLBACK - 因此不会进行更新。 我试图将 db 更改为 H2 - 结果相同。

这是来自 postgres 审计日志的查询

2012-12-18 00:21:17 CET :  S_1: BEGIN
2012-12-18 00:21:17 CET :  <unnamed>:  UPDATE message  SET opened = true, opened_date = now()  WHERE id_profile_to = $1 AND id_profile_from = $2 AND opened IS NOT true
2012-12-18 00:21:17 CET : parameters: $1 = '1', $2 = '2'
2012-12-18 00:21:17 CET :   S_2: ROLLBACK

.......

Play Framework 文档和 Ebean 文档 - 声明没有事务/如果没有声明,或者如果每个查询需要瞬态/。

所以...我成功了

    Ebean.beginTransaction();
    int modifiedCount = update.execute();
    Ebean.commitTransaction();
    Ebean.endTransaction();
    Logger.info("update mod = " + modifiedCount);

但这没有区别 - 相同的行为......

Ebean.execute(update);

再次 - 相同的..

下一步我做了 - 我用

注释了方法
@Transactional(type=TxType.NEVER)

@Transactional(type=TxType.MANDATORY)

它们都没有改变。

我对 Ebean 感到非常沮丧 :( 有人可以帮忙吗?

顺便说一句。 我设置了

    Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(true);
    Ebean.getServer(null).getAdminLogging().setDebugLazyLoad(true);
    Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);

在 Play 控制台中查看查询 - 记录其他查询 - 此更新 - 不是

【问题讨论】:

    标签: postgresql transactions playframework-2.0 sql-update ebean


    【解决方案1】:

    只需删除初始空间...是的..我也不敢相信... 从“更新...”更改为“更新...”

    仅此而已……

    【讨论】:

    • 我也遇到过类似的问题,这个解决了!
    • 很好的提示!愚蠢的问题……
    【解决方案2】:

    我认为您必须使用原始 sql 而不是 createSqlUpdate 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-03
      • 2019-02-03
      • 2012-08-12
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多