【问题标题】:Grails 2.4.2 java.sql.Connection objectGrails 2.4.2 java.sql.Connection 对象
【发布时间】:2014-08-29 01:34:56
【问题描述】:
我已使用 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 对象?
【问题讨论】:
标签:
oracle
connection
hibernate-4.x
grails-2.4
【解决方案1】:
对于任何感兴趣的人,我已通过从服务中调用以下命令解决了该问题:
/**
* 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 文件的插件中,并且在我的项目中运行良好。