Grails 2.4.2 java.sql.Connection对象

时间:2014-08-29 01:34:57

标签: oracle connection hibernate-4.x grails-2.4

我使用hibernate 4将我的项目从Grails 2.2.3升级到2.4.2。(4.3.5.4)

此项目中有一项服务使用Oracle空间查询和流程来生成结果。

将Oracle JGeometry对象转换为Oracle STRUCT需要数据库连接对象才能工作:      STRUCT obj = JGeometry(geom,connection)

如何从Hibernate 4获取java.sql.Connection对象?

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我通过在服务中调用以下内容来解决问题:

    /**
 * createConnection creates a database connection using the java.sql.DriverManager
 * The parameters used to make the connection are taken from the current session
 * @return java.sql.Connection object
 */
Connection createConnection(){

    oracle.jdbc.OracleConnection cnx = null
    try {
        sessionFactory?.currentSession?.doWork new Work(){
            void execute(Connection c){
                //convert the com.sun.proxy.$Proxy<nn> connection to Oracle
                cnx = c.unwrap(oracle.jdbc.OracleConnection.class)
            }
        }

        return cnx

    }
    catch (SQLException sqle){
        RIMS.ConnectionService.log.error "Error in createConnection:  ${sqle.message}"
    }
    return null
}

我还补充说:

import org.hibernate.jdbc.Work

def sessionFactory

注入sessionFactory bean。

此代码包含在没有dataSource.groovy文件的插件中,并且在我的项目中运行良好。