Play框架在请求开始时执行原始sql?

nep*_*eph 3 java sql postgresql playframework playframework-2.0

最近开始使用play 2.1.x. 我想知道每个请求执行一次原始SQL查询的最佳方法是什么?我使用postgres并需要指定什么模式 - " 将search_path设置为 ..." - 每个请求一次查询类型.

我用jdbc配置postgres并且它连接正常,发现一些旧的注释,play.db.DB应该有一个executeQuery方法,但它不再了?

要为每个请求运行代码,我已经覆盖了GlobalSettings类的"onRequest"方法:

    @Override
public Action onRequest(Request request, Method actionMethod) {
   //play.api.db.DB.executeQuery(); // -- This does not exist?
   return super.onRequest(request, actionMethod);
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是最好的方式,任何帮助将不胜感激.我无法更改底层架构,我确实需要将搜索路径设置为schema =)

Kar*_*arl 5

你错误地看着我认为的scala文档.检查这些:

http://www.playframework.com/documentation/2.1.3/api/java/index.html

http://www.playframework.com/documentation/2.1.3/JavaDatabase

您可能希望使用play.db.DB.getConnection(),它返回java.sql.Connection.然后你就可以使用标准的java api了.

String sql = "...";

Connection conn = play.db.DB.getConnection();
try {
    Statement stmt = conn.createStatement();
    try {
        stmt.execute(sql)
    } finally {
        stmt.close();
    }
} finally {
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)