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

java - 使用手动 PK(非自动生成)插入带有 Spring 数据 JDBC CrudRepository 的 Oracle

使用 Spring Data JDBC v1.0.4(不是 JPA)在 Oracle DB 中插入时出现以下错误:

似乎默认实现总是需要一个自动生成的键,但我的表的主键是一个字符串。

要持久化的实体:

存储库:

对存储库的调用:

异常在insert方法的最后一行抛出org.springframework.data.jdbc.core.DefaultDataAccessStrategy

问题是 KeyHolder 接口有一个getKey返回 Number 的方法,Oracle 作为生成的 KEY 返回 ROWID ...但是实体 PK 没有生成,ID 是在插入之前设置的。

我无法理解该代码有什么问题,欢迎提供任何帮助。

0 投票
2 回答
3535 浏览

java - 在 Spring Boot 应用程序中使用 Spring Data JDBC

我正在寻找有关如何在 Spring Boot 应用程序中配置 Spring Data JDBC 的信息(一个 Gradle 示例将是理想的)。

我已经阅读了文档,并且我知道我需要Repository为每个域类(或域类的“聚合”)定义一个实现,例如

但并不完全清楚需要添加哪些依赖项,如何将存储库 bean 注入其他 bean,如何向 Spring 指定可以找到存储库 bean 的位置等。

我特别想看看如何定义一个管理多个表/域类的存储库。例如,一个管理 an 持久性的存储库,Order它是 s 的集合OrderItem文档中的示例仅显示如何将单个域类映射到存储库。

0 投票
1 回答
43 浏览

spring-data-jdbc - 支持 byte[] 的映射

我们的实体包含字段byte[] fileContent

spring-data-jdbc 似乎没有将其保存在数据库中;实际上只保留了 1 个字节,而不是整个数组。

有没有办法使用 Spring Data JDBC 持久化二进制内容?谢谢

0 投票
2 回答
1623 浏览

java - Spring 数据 JDBC 无法创建存储库 Bean - “实体被标记为 @NonNull 但为空”

我刚刚开始探索 Spring Data JDBC。我有一个简单的数据库(postgres),其中包含我要查询的问卷表:

和 Java 类:

(配置灵感来自这里

(实体)

(存储库):

但是,在启动应用程序时,我无法为存储库创建 bean,并出现以下错误,并且无法弄清楚我在实例化此存储库时做错了什么:

任何帮助将不胜感激 - spring data jdbc 看起来很有希望;但是,由于无法实例化存储库,我被阻止了... :(

编辑:添加了实体注释(仍然是同样的错误)

0 投票
1 回答
1490 浏览

spring-data - Spring Data JDBC 中的乐观锁

我注意到 Spring Data JDBC 似乎没有实现乐观锁定(类似于 JPA 的 @Version 注释)。

我正在考虑创建一个@Modifying考虑版本字段并返回boolean以手动检查更新是否成功的查询。但恐怕这种方法仅限于简单的实体,而不是意味着多个表的聚合。

为聚合实现乐观锁定的最佳方法是什么?

0 投票
1 回答
186 浏览

java - Set 的映射需要 Id?

我有一个spring data jdbc的映射问题如下:
Student实体:

接下来我有一个StudentSubjectRegistration实体:

当我运行测试以找到一个特定的学生时,如下所示:

控制台说有一个 sql 语句发出: Executing prepared SQL statement [SELECT student.studentid AS studentid, student.userid AS userid, student.matriculationnumber AS matriculationnumber, student.email AS email FROM student WHERE student.studentid = ?]

至于我的理解,应该发出另一个 sql 语句来获取相关的注册,不是吗?

相反,发生了一个异常: java.lang.IllegalStateException: Required identifier property not found for class de.thd.awp.student.StudentSubjectRegistration!

我必须StudentSubjectRegistration用一个建模@Id吗?

StudentSubjectRegistration不应该是聚合根。它应该Student是保存其注册的参考。

我错过了什么吗?

另外请注意,我在这篇博文https://spring.io/blog/2018/09/27/what-s-new-in-spring-data-lovelace的启发下尝试对实体不变性进行建模...

我做对了吗?

谢谢你的帮助!

0 投票
1 回答
89 浏览

spring - 如何使用静态工厂方法对不可变实体建模

您好,我有一个关于建模不可变实体的正确方法的问题:

考虑这个实体(根据 Jens Schauder 的建议编辑):

所以这个实体应该是不可变的,并提供了一个静态的of创建方法。还RequiredArgsConstructor构建了一个私有构造函数,尽管它应该为每个定义的所有最终/非空字段创建一个可见的包。总之我做了AllArgsConstructor这么说。

此处的此文档https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#mapping.fundamentals详细介绍了有关“对象创建内部”的部分说明了改进处理的4个方面-“ Spring Data 使用的构造函数不能是私有的“除其他外,我认为这些都已实现。

所以我的问题是:这个图示的实体在不变性和弹簧数据 jdbc 内部优化映射方面是否正确?

编辑:

intellij 中的 lombok 插件似乎存在错误,阻碍了access = AccessLevel.PACKAGE正确的工作。见这里: https ://github.com/mplushnikov/lombok-intellij-plugin/issues/584

虽然问题已经关闭,但新版本的插件不可用...

0 投票
1 回答
120 浏览

spring-mvc - Spring4 + SpringDataJDBC,如何在配置文件中为 MyRepository 定义 bean

注意:我没有使用 Spring Boot

我收到如下错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [com.repository.MbrEnrollRepository] ​​的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注释:{}

这是我的存储库,它扩展了 spring data jdbc 的 crud 存储库

我在我的服务类中调用 countItems() 方法。据我所知,spring 容器将创建一个存储库实例,为此我们需要在配置类中定义存储库类型的 bean。我还没有找到任何地方,如何为存储库定义一个 bean。

如 spring 文档中所示,我在我的配置类中定义了所需的 bean。

我的控制器类

是否可以将 Spring 数据 JDBC 与 spring 4+ 一起使用?如果是,请帮助我....

0 投票
1 回答
1544 浏览

spring-data - 如何使用 spring-data-jdbc 实现批量插入

是否可以以某种方式使用 spring-data-jdbc 实现批量插入?或者我可以使用这个 spring-data 实现访问 JDBCTemplate 吗?

0 投票
1 回答
429 浏览

spring-data-jdbc - Spring jdbc存储库多对多连接表列名

在 spring-data-jdbc 中存在多对多关系的情况下,我找不到在哪里为联合表定义自定义列名。

我从我的 fork 中的https://github.com/spring-projects/spring-data-examples扩展了聚合示例: https ://github.com/konstiak/spring-data-examples/commit/2a901bb4d81c35406da393b1368109136ae21f5f 。

如果结合表有列 [color, lego_set] 它开箱即用。但我想为这些列自定义名称 [color_id, lego_set_id]。'color_id' 很清楚。我可以通过 ColorRef 实体中的 @Column 注释来定义它。但是如何定义 LegoSet.id 的列将存储在“lego_set_id”中?

已解决我只需要在 LegoSet 实体中的颜色字段上定义 @Column(value = "lego_set_id")