问题标签 [spring-data-jdbc]

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.

0 投票
1 回答
89 浏览

java - Spring官方文档中的问题

这是官方文档中的一个例子(你需要向下滚动一点):</p>

我对此有几个问题。

  1. Person withId(Long id)示例中不存在引用的构造函数吗?

  2. Person withId(Long id) 官方文档中有这样的描述:“相同的模式通常适用于存储管理的其他属性,但可能需要更改以进行持久化操作”。是不是可以这样理解:成功保存实例后,WithOutIdPerson可以用于其他字段更改并再次保存,SavedPerson还可以用于其他上层操作?

  3. 为什么of ()在示例中调用工厂的最后一步?

谢谢~

0 投票
2 回答
2070 浏览

java - 使用 Spring Data JDBC 中不支持的类型的查询参数?

我试图在我的存储库中编写一个类似于此的查询方法

执行代码时出现以下错误:

org.postgresql.util.PSQLException:无法推断要用于 java.time.Instant 实例的 SQL 类型。使用带有显式类型值的 setObject() 来指定要使用的类型。

我是否忘记了什么,或者 Spring Data Jdbc 根本不支持将 Instant 用作参数?如果是这样,将来是否计划提供这样的支持?

0 投票
1 回答
358 浏览

java - 使用 Spring Data JDBC 持久化资金

让我们采取以下实体:

和相应的存储库:

是否可以在不手动重写提供的 SQL 查询的情况下将 Item 保存在单独的列中具有金额和货币的关系数据库表中ItemRepository

DDL 可能类似于:

使用自定义将钱存储在单个VARCHAR列中@WritingConverter@ReadingConverter这是我得到的最接近的,但这不是一个选项,因为我需要在数据库级别明确区分金额和货币。

joda.money如果这会有所作为,我可以替换javax.money,但是我不想引入我自己的自定义类型来处理域层中的资金。

0 投票
0 回答
890 浏览

java - 从 Spring 集成测试运行时,Spring DATA JDBC 无法注入存储库

Spring Boot JDBC带有Spring Boot:2.2.4.RELEASE,在 gradle dep 中:

-data-jpa 的部门(参见“重复问题”)

仅在从集成测试运行时出现此错误:

我的存储库被定义为这个。一个界面。它不能有构造函数。

它的注入方式是:

集成测试本身:

它曾经适用于测试中较低的弹簧靴版本。它工作正常。从 IDE 开始测试。它工作正常。当启动应用程序并点击端点时 - 它确实注入了存储库。

问:如何使 Spring DATA JDBC 没有这个“A constructor parameter name must not be null to be used with Spring Data JDBC!” spring 数据 jdbc 存储库的错误?

更新:刚刚检查并仔细检查。

MyData2是一样的 - 使用默认 + all arg 构造函数。一切都是手工制作的。没有lombok

更新 2:

如果我创建一个文件夹“jdbc”,则将配置类放在那里,@ EnableJdbcRepositories并将我的所有数据 jdbc 存储库“放在一个模块中”。我仍然有同样的例外。IF 从集成测试运行。

0 投票
1 回答
1424 浏览

java - Spring Data JDBC - POJO中的Clob列到字符串属性不起作用

我有一个带有DESCRIPTIONCLOB 类型列的表的 Oracle 数据库。

我的 POJO 看起来像这样:

我的存储库看起来像这样

当我调用存储库方法时,我收到一条错误消息,指出没有将 CLOB 转换为字符串的转换器。

任何帮助表示赞赏。

0 投票
1 回答
87 浏览

spring-data-jdbc - Spring-Data-JDBC 是否支持 Oracle 标识列?

我正在尝试使用 Oracle 标识字段(它是某种自动增量)保存到表中。但是一旦我这样做了,我就会得到一个“保存后身份不能为空”的异常?

目前不支持这种情况还是我需要特殊配置?

顺便说一句:它适用于 JPA。

0 投票
1 回答
1436 浏览

spring - 我可以在没有使用 Spring Boot 的任何数据库的情况下使用 Spring Data JDBC 模拟 CrudRepository 吗?

我正在开发一个使用 Spring Boot 2 和 Spring Data JDBC 的应用程序。最终的应用程序将使用 MySQL。

我目前有一个持久层和一个服务层以及一些从 CrudRepository 派生的存储库。

对于我的单元测试,我真的想在没有任何数据库的情况下进行单元测试。甚至没有 HSQL。我知道这里有几种不同的哲学可以订阅,但我想切换到纯单元测试,看看它是如何发挥作用的。我将在集成测试中使用数据库。

我的application.properties测试文件夹中有一个单独的文件夹,其中我有一个单独的测试配置。

如果没有定义数据源,Spring Boot 将默认使用 HSQL application.properties。但同样,我想在没有任何数据库的情况下运行我的测试,并且只模拟我的 CrudRepository 实现。我尝试通过在我的以下内容中使用不同的变体来禁用 Spring Boot 的数据库自动配置application.properties

在我的测试中,我试图做这样的事情:

我在服务中使用基于构造函数的依赖注入。但是,我从 Spring 收到如下错误:

我想要的是一个模拟的 userRepository,我可以在其中预先配置一个伪造的存储库以返回虚拟数据。但似乎删除数据库配置会完全删除 CrudRepository,因此 spring boot 应用程序的任何部分都无法启动。还是我错过了其他东西。

我正在使用 Eclipse、Maven、Mockito 和 JUnit5。我应该注意,如果我对测试 mysql 数据库运行“单元测试”,那么一切正常,所以我知道代码或测试或一般设置没有任何问题。问题仅在我想摆脱数据库时才开始。

我是一名初级 Java 开发人员,这样做是为了好玩,所以我可能会遗漏一些明显的东西。在网上搜索 Spring Data JDBC 很困难,因为我几乎只找到与 JPA 相关的解决方案。

0 投票
1 回答
86 浏览

spring - Spring-fu-Kofu:无法连接“NamedParameterJdbcTemplate”

我正在玩 Kofu 功能性 Bean DSL。我正在将 Spring-Data-JDBC 与 Spring-MVC 一起使用,并尝试自动装配 NamedParameterJdbcTemplate。但是,我一直收到这个错误,在运行测试时没有找到任何 bean。在基于注释的方法中,我们不必提供显式的 NamedParameterJdbcTemplate。我的示例应用程序在这里:https ://github.com/overfullstack/kofu-mvc-jdbc 。和 PFB 中的一些代码片段:

这是错误:

请帮忙,谢谢

0 投票
3 回答
330 浏览

java - spring-data-jdbc 中的参数化顺序

我正在努力使订单参数化。最好的就是拥有

是否可以转:

进入:

我正在使用 spring-data-jdbc 1.1.3.REELASE 版本。即使只为列名这样做也会对我有很大帮助。

0 投票
1 回答
221 浏览

spring-data-jdbc - Spring data jdbc:如何使用来自 org.springframework.data.geo 包的 Point

我有一个实体

点来自org.springframework.data.geo

和它的 Postgres 模式

当我尝试通过 spring data jdbc 存储库(arenaRepository.findAll())使用实体时

我收到一个错误

请求处理失败;嵌套异常是 org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 错误的 SQL 语法 [SELECT arena.id AS id, arena.y AS y, arena.x AS x FROM arena]; 嵌套异常是 org.postgresql.util.PSQLException:错误:列 arena.y 不存在

我看到 SQL 与架构不匹配。但是是否可以通过 Spring Data Jdbc 使用“geo”类?

我尝试将位置介绍为列表并且它有效。这是正确的方法吗?