玩Framework 2.0和SQL Ebean记录玩Framework 2.0和SQL Ebean

2019-05-11 22:17发布

我想审查Ebean产生什么样的SQL语句,找出为什么某些例外情况(与SQL语法)在我的播放2.0应用程序正在发生。 有没有登录游戏框架2.0通过Ebean生成的SQL语句呢?

在播放1.x中,有一个jpa.debugSQL配置选项,如果设置为true,将不正是这一点。 对于播放2.0是否存在Ebean类似的设置? 在约2.0播放的Ebean文档页面还是显得有些稀少。


我迄今为止尝试:

我已经加入我的控制器和这些方法调用onStart / onRequest全局对象的方法,但它不会有任何影响:

Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(Play.isDev());

我已经修改从日志级别application.conf ,但它并没有帮助(甚至日志级别TRACE )。

Answer 1:

对不起,是迟到了,但我在开发中使用这样的:

db.default.logStatements=true

logger.com.jolbox=DEBUG

添加这两行的application.conf,你是好去。

它输出的所有SQL语句。 希望能帮助到你。



Answer 2:

您可以使用下面的语句使SQL日志

Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(true);

在使用此命令onRequest拦截例如

在接下来的版本中,您一定能在文件配置此ebean.properties 。

// Tips : use Play.isDev() to log only in dev mode


Answer 3:

您也可以通过使用方法getGeneratedSQL获得当场SQL。 下面的代码示例

        Query<PreventionActivity> where = find.where(
            and(
                    and(
                    ge("Age_FROM", age)
                    , or(le("Age_TO", age), eq("Age_TO", 0))
                    )
                    , or(eq("Gender_CD", genderCd), eq("Gender_CD", "*"))
            )
    );

    List<PreventionActivity> list = where.findList();
    Logger.info("sql ");
    Logger.info(where.getGeneratedSql());


文章来源: Play Framework 2.0 and Ebean SQL logging