我们目前使用的是 PostgreSQL 数据库和 OrmLite。我们现在有一个使用 Postgres hstore 的用例,但找不到通过 OrmLite 访问该表的任何方法。我宁愿避免打开单独的数据库连接只是为了选择并插入到该表中,但我没有看到任何其他选项。

至少我想要 OrmLite 正在使用的现有连接的句柄,以便我可以重用它来构建准备好的语句,但我还没有找到从 OrmLite ConnectionSource java.sql.Connection 开始获取 . 的方法
我看到 OrmLite 有一个 JdbcCompiledStatement ,但这只是 PreparedStatement 的包装器,需要将 PreparedStatement 传递给构造函数。 (不确定它的用例是什么。)

我尝试使用 DatabaseConnection.compileStatement(...) ,但这需要了解正在使用的字段类型,而 OrmLite 似乎不知道 hstore 是什么。

我尝试使用 updateRaw() ,但该函数仅存在于我没有的 OrmLite dao 上,因为我要将 dao 链接到的表具有 OrmLite 无法识别的字段类型。有没有办法让通用 dao 发出原始查询?

我知道 hstores 是特定于数据库的,OrmLite 可能不支持,但我真的很想找到一种方法,使用不受支持的字段而不是仅不受支持的查询来将数据传入和传出数据库。

最佳答案



好的,这很容易。正如@jsight 所提到的,JDBC 的 ORMLite ConnectionSourceJdbcConnectionSource 。当您使用 connectionSource.getReadOnlyConnection() 从该类获得连接时,您将获得一个 DatabaseConnection,它实际上是一个 JdbcDatabaseConnection 并且可以转换为它。有一个 JdbcDatabaseConnection.getInternalConnection() 方法返回关联的 java.sql.Connection



您确实可以使用任何 DAO 类在任何表上执行原始函数。可以方便地将其视为对 DAO 对象表的非结构化更新。但是如果你有任何 DAO,你可以对任何其他表执行原始更新。



如果您使用不受支持的字段,那么您将不得不将其作为原始语句来执行——SELECTUPDATE 。如果您编辑帖子以显示您尝试过的原始语句,我可以更具体地提供帮助。

关于java - 有没有办法将 OrmLite 与 Postgres hstores 一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12374848/

10-12 18:31