问题标签 [jdbi3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - jdbi在使用reduceRows加入时抛出错误,一对多关系
我正在尝试使用 JDBI 编写一个对象查询来处理一对多关系。如文档中所见,reduceRows
是这样做的方法。但是我把这些错误归咎于构造函数;
更新:为每个实体保留一个构造函数。
我测试了文档中的代码,得到了这些堆栈跟踪:
我的代码:
摇篮依赖:
将不胜感激任何帮助/有人指出我正确的方向!是否可以在 Dao 界面中做到这一点?
java - 如何在非接口非抽象类中使用 JDBI @Transaction 注解?
所以我来自 Spring Boot 背景,我对 Spring@Transactional
注解如何与 Hibernate 无缝协作印象深刻。我现在正在开发一个 Dropwizard 应用程序,该应用程序正在使用Jdbi3
. 而且我发现了一个类似的注释,它的工作方式与某些先决条件@Transaction
完全相同。Spring
春天
所以根据 Spring Guidelines,Repository
和Controller
是分别与数据库和 HTTP 请求通信的两个接口,Service
Layer 是所有业务逻辑所在的地方。总是有这样一种情况,服务中的单个方法使用多个存储库执行 CRUD 操作。因此,让服务方法使用 注释非常有意义@Transational
。
Jdbi 与 Dropwizard
如果我错了,请纠正我。在这里Jdbi
,Repository
成为Dao
,Controller
成为Resource
,Service
留下Service
。也许不同的人使用不同的层架构,但让我们假设这是我的问题所在的情况。
问题陈述
我希望在 Jdbi 中实现与 Spring 中相同的事务处理,因为它对我来说更有意义,而无需添加任何额外的层。这是我将抛出一些代码,我希望实现的目标:
Dao1.kt
Dao2.kt
Service.kt
需要注意的几点
我知道
onDemand
只能在abstract
类或接口上使用,因此我无法Service
使用onDemand
. 我也不能做我的Service
摘要。很少有文章建议做一个摘要
Repository
并Transaction
在那里使用。但是根据我想到存储库时的想法,我看到它与entity/table
. 或者可能是相关实体。所以如果我想在同一个服务方法中更新movie
和user
表,将这两个事务语句放在一个方法下XRepository
对我来说听起来很荒谬。它是业务逻辑的一部分,应该驻留在Service
.我想我可以使用
jdbi.inTransaction
andjdbi.useTransaction
。Dao
但在那种情况下,我必须手动附加每一个。有没有更好的方法来做到这一点?
谢谢
java - Spring Boot 自定义 Bean 加载器
我将 JDBI 与 Spring Boot 结合使用。我按照本指南创建了一个类:JdbiConfig
在其中,对于应用程序上下文中需要的每个 dao,您必须添加:
我想知道 Spring Boot 中是否有某种方法可以创建自定义处理器来创建 bean 并将它们放入应用程序上下文中。我对这如何工作有两个想法:
- 使用自定义注解对 DAO 进行注解
@JdbiDao
并编写一些内容来获取它们。我曾尝试手动将这些注入到应用程序启动中,但问题是它们可能无法及时加载以注入,因为它们在类扫描期间无法识别。 - 创建一个
JdbiDao
每个存储库接口都可以扩展的类。然后用标准注释接口@Repository
并创建一个自定义处理器以通过以下方式加载它们Jdbi#onDemand
这是我的两个想法,但我不知道有什么方法可以实现。我坚持手动创建一个bean?这个问题以前解决过吗?
java - Jdbi3:具有多个dao和@Transaction注解的事务
我必须执行一个涉及多个 dao 中的方法的事务,所以我使用的是类似的东西:
但是如果例如在Dao1
method1 中用 注释@Transaction
,例如:
上面的句柄部分会在同一个事务中执行这两种方法吗?还是method1会在执行过程中开启一个新事务?
java - 使用 JDBI 的 Quarkus
我正在使用quarkus和JDBI。是否有任何等效于Spring 的类TransactionAwareDataSourceProxy.class的类,当它请求新的连接时,它将包装 DataSource 强制JDBI获取与当前事务关联的现有连接。
java - 有没有办法使用自定义策略来映射 JDBI3 中的枚举类型?
我有一个简单的场景,其中正在发送枚举以进行存储,我想将其拉出。但是,我不能使用Ordinal或Name策略。存储的值是每个枚举实例中的值。
TLDR:有没有办法让我注册一个映射器,它在持久性上做一件事,在检索上做另一件事?
免责声明:我没有使用 posgres
最简单的表
我正在尝试提取数据,但出现以下错误:
Exception in thread "main" org.jdbi.v3.core.result.UnableToProduceResultException: no N value could be matched to the name 15
我知道我正在使用AbstractArgumentFactory,我认为这是我问题的根源。我认为这个助手不能灵活地满足我的需求。
有没有办法让我注册一个映射器,它在持久性上做一件事,在检索上做另一件事?
jdbi - 使用 JDBI 映射 @Json 属性
根据 JDBI 文档https://jdbi.org/#_jackson_2,拥有对象模型的 json 属性似乎很简单,但是我尝试了以下方法,但遇到了很多问题。
DB:具有 Jsonb 列类型的 Postgres
数据源已配置
插入绑定列表的SQL
运行代码插入时,出现以下错误:
如果我创建了 EventPropertyArgumentFactory 并使用 Jackson ObjectMapper 和 writeValueAsString,那么我可以将它保存到 DB。但是,当从数据库中检索它时
抛出以下错误
我认为我需要做的就是声明用@Json 注释的字段,DB 列必须是 json/jsonb 类型并安装插件,但似乎情况并非如此?
任何人都成功地尝试过这个,而不必定义自定义行映射器和参数工厂实现?
谢谢
java - Jdbi字符串模板引擎条件表达式
我正在尝试将 jdbi 字符串模板引擎与 if 条件中的表达式一起使用。我尝试了不同的版本:
但我还没有找到一种方法来使用带有逻辑表达式而不是布尔值的 if 条件。是否有可能出现这种行为,或者我必须将 N 个布尔变量传递给我的 dao 方法?
java - org.jdbi.v3.core.statement.UnableToCreateStatementException:查询声明无时提供了多余的命名参数
我想从用户类型列表中获取 Id 列表。
这里 User.UserType 是一个枚举。在方法(getUserIdsByListOfTypes)中,我传递了枚举类型列表的参数(userTypes)。
我无法理解查询中的问题出在哪里。
jdbi - 如何从 JDBI3 中的 SQL-Object 映射 SQLException
假设我将表定义为:
重要的部分是NAME_IS_UNIQUE
约束。
对应的 POJO 项为:
和 SQL-Object 接口,其方法定义为:
如果我尝试使用已经存在的 NAME 插入到项目中,那么我将获得关于约束 NAME_IS_UNIQUE 违规的数据库供应商特定的 SQLException。
有没有办法提供 SQLException 和应用程序特定异常(例如 ItemNameUniqueConstraintException)之间的映射,所以insert
方法本质上将其签名更改为类似于下面的签名?
问题不是关于特定的 UNIQUE 约束,而是更多关于一般情况的问题,其中 SQLException 可以是任何事情:比如违反引用完整性或违反检查约束等。