java - 如何创建自定义 SQLite 函数并在 Cayenne 下执行

标签 java sqlite apache-cayenne

我正在尝试编写一个自定义 SQLite 函数,该函数需要两个参数并与 Apache Cayenne 的 performQuery() 一起运行,如下所示:

String query = "SELECT * FROM TABLE WHERE MYFUNC(arg1, arg2) <= SOME_VALUE"

ObjectContext ctx = ...
ctx.performQuery(query)

我尝试使用org.sqlite.Function.create(),但由于我的连接被 Cayenne 包装而失败。

最佳答案

我的理解是,无论您使用什么方法来注册函数,它都只会发生在单个连接上。在 Cayenne 中,您通常使用具有多个连接的连接池。此外,这些可以对应用程序的其余部分透明地关闭和重新打开。您需要考虑到这一点。

换句话说,您需要确保池中的每个连接都注册了此函数。一种快速但肮脏的方法可能是将池限制为只有一个连接。更先进、更干净的解决方案是实现您自己的 DataSourceFactory并在启动时将其加载到 Cayenne 运行时 via a custom module 。一种实现将包装创建新连接的方法,为每个连接添加自定义函数。

关于java - 如何创建自定义 SQLite 函数并在 Cayenne 下执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753965/

相关文章:

java - 自定义构造函数 : Apache Cayenne 3. 2M

java - struts2 创建 session 对象,为什么以及何时?

java - AtomicInteger 公平吗?

java - 如何创建一个图表来解释我的代码流程?

android - 如何将 AlarmManager 与存储在 SQLite 数据库中的数据一起使用?

android - 使用 sqlitecursorloader 从 Intentservice 插入 SQLite

java - 管理 Apache Cayenne "...project.xml"文件的最佳实践

Java 8 : Get Consumer<? > 底层函数注释

java - 在 Spring MVC Controller 中代理 HttpServletRequest 的最简单方法

python - 在python中反序列化objective-c二进制NSMutableArray