问题标签 [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 回答
2036 浏览

java - 如何使用 Spring Data JDBC 处理复合键

我正在尝试使用 Spring Data JDBC 访问具有复合键的表,尽管我可以找到很多关于 Spring Data JPA 如何处理此问题的信息,但似乎同样不适用于 Spring Data JDBC。

谁能给出一个快速示例,说明您需要如何使用 Spring Data JDBC 声明实体/存储库以与具有复合主键的表对话?(例如,两个字符串)

0 投票
1 回答
6613 浏览

java - 一对多 Spring 数据 JDBC

我想用 Spring Data JDBC 建模 OneToMany 关系。我已经阅读了这个非常有用的博客https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates,当你想建模 ToMany 参考时,你应该使用参考:

因此,任何多对一和多对多关系都必须仅通过引用 id 来建模。

所以我有这种情况:
一个Student可以有多个Registration. 一个Registration可以正好有一个Student。如果您删除Registration分配的Student不应该被删除级联。
我最终得到了这个模型:

我的问题是我的建模是否正确实施?

0 投票
1 回答
2050 浏览

java - 关于Spring Data JDBC + Hikari + Postgres JSONB的问题

我正在尝试使用 Spring Boot Data JDBC 和 Postgres 构建一个 API。

我有一个简单的 pojo,我想写到一张桌子上:

该表有 2 列,一个 varcharid列和一个 jsonbdefinition列。

使用简单的 CRUD 存储库保存 pojo 时,出现以下错误。

ERROR: column "definition" is of type jsonb but expression is of type character varying

解决方案通常是传入spring.datasourcehikari.connection-properties: stringtype=unspecifiedapplication.yml,但我无法让它工作。

当我为 hikari 激活调试日志记录时,我可以看到我为它激活的其他设置(例如池名称)

这是我的 application.yml:

有任何想法吗?

编辑:

这是存储库界面:

0 投票
2 回答
1027 浏览

java - 使用 Spring Data JDBC 的奇怪的一对多行为

我碰巧在 Spring Data JDBC(使用 Spring Boot 2.1 和必要的启动器)聚合处理中遇到了一些非常奇怪的东西。让我解释一下那个案例(我正在使用 Lombok,不过这个问题可能是相关的)......

这是我的实体的摘录:

这是一个关联的 Spring Data 存储库:

这是一个失败的测试:

事实是,通过调试,我发现地址集合(它是一个集合)包含附加地址的同一实例的两个引用。我没有看到两个引用是如何结束的,最重要的是,一个 SET(实际上是一个 LinkedHashSet,为了记录)如何处理同一个实例 TWICE!

有人知道这种情况吗?谢谢

0 投票
2 回答
8142 浏览

java - 如何使用 Spring Data JDBC 建模一对一关系?

我想使用 Spring Data JDBC 和 PostgreSQL 对一对一关系进行建模,但我无法以正确的方式设置根聚合。

有以下场景:图片SQL
每个引擎都是唯一的,car有唯一的列engine_id是 的外键engine.id,同样适用truck。因此汽车和卡车应该是根聚合,所以当汽车或卡车被删除时,引擎表中的引用行也应该被删除。

根据我对Spring Data JDBC Aggregates的理解

如果多个聚合引用同一个实体,则该实体不能是引用它的那些聚合的一部分,因为它只能是一个聚合的一部分。

所以问题是:

  • 由于上面的解释,解决方法是否可行,以便通过执行 CRUD 操作car并将truck更改也反映到engine
  • 使用 Spring Data JDBC 在 java 中实现这种关系的最佳方法是什么?

这是我的看法,它不起作用,但应该澄清我想要完成的事情。

汽车.java

引擎.java

卡车.java

0 投票
3 回答
2496 浏览

java - Spring Data JDBC - 一对多 - Kotlin

我使用 spring boot 2.1.1.RELEASE 和 spring-data-jdbc 1.0.3.RELEASE,Kotlin 1.3.10。

我在 kotlin 中有以下简单的类定义:

以及以下数据库表定义:

我收到以下错误:

来自spring文档: “被引用实体的表应该有一个与引用实体的表命名相同的附加列。您可以通过实现 NamingStrategy.getReverseColumnName(RelationalPersistentProperty property) 来更改此名称。”

我究竟做错了什么?

更新:添加 java set 集合也无济于事

更新 2:仍然没有修复,在 github 上添加了一个可重现的示例项目:

0 投票
2 回答
1240 浏览

java - 如何处理 Spring Data JDBC 中的软删除?

有没有一种很好的方法来处理 Spring Data JDBC 中的软删除?

在 Spring Data JPA 中,我们可以添加@Where(clause="is_active=1")注释或扩展CrudRepositoryPagingAndSortingRepository.

由于 Spring Data JDBC 在查询中不支持 SPEL,我们不能像这样以通用方式编写它们:

那么扩展CrudRepositoryPagingAndSortingRepository意味着为每个实体/表的每个存储库编写相同的查询?喜欢

感谢您提前回复!

0 投票
3 回答
1942 浏览

java - Spring Data JDBC:DataRetrievalFailureException:无法将 [oracle.sql.ROWID] 转换为 [java.lang.Number]

我是 Spring Data JDBC 的新手,我正在努力创建一个简单的 Dto 并将其保留在数据库中。

我正在使用 Spring-Boot 2.1.1.RELEASE 和 Oracle 12 数据库。

用户Dto

用户道

我只是想像这样将它持久保存在数据库中

我得到了这个例外。

我相信这在某种程度上与@Id 是一个字符串这一事实有关。

有人可以帮我理解我做错了什么吗?为什么会有这种行为。在规范上,我没有看到和限制 Id 的类型。这是和Oracle集成的问题吗?我怎样才能解决这个问题?

感谢大家的帮助。

0 投票
2 回答
937 浏览

spring-data-jdbc - 如何在 Spring Data JDBC 中使用数组

我正在尝试将 Spring Data JDBC 用于我的 PostgreSQL 数据库。我定义了以下bean

和相应的 DDL

然后我尝试插入报告

whererepository只是一个CrudRepository<Report, Long>.

这给了我以下错误

我可以以某种方式告诉 Spring Data JDBC 如何映射数组类型吗?

0 投票
1 回答
2232 浏览

java - 如何使用 Spring Data JDBC 选择引用的实体

如何选择与 Spring Data JDBC 的一对一关系中的引用实体?

当我在此博客上尝试以下代码时

这会在下面引发异常:

从 ResultSet 检索值时,spring data jdbc 将父实体的名称作为前缀添加到子实体的列中。但是我不能在文档上使用这个映射规则......

有没有办法自定义这个映射规则?

DDL:

[更新]

spring-data-jdbc 的版本是 1.0.4.RELEASE。

SQL 语句在这里:

完整的堆栈跟踪是