问题标签 [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.
spring-boot - 更新到 Spring Boot 2.2.1 后的 NoSuchBeanDefinitionException
将现有代码从 spring boot 2.2.0 升级到 2.2.1 后,我遇到了一个奇怪的问题。
似乎我的 spring 数据 jdbc 存储库不再以某种方式被扫描:
此外,在引导 2.2.1 中也有此信息调试行:
当我将所有内容切换回引导 2.2.0 时,信息消息以及上述异常都消失了。
有什么提示吗?
编辑
实体
存储库
到目前为止,@Table
如果您不想更改数据库上的表名,则不需要注释。此外@EnableJdbcRepositories
,以这种方式扫描每个文档:
如果没有配置基本包,则使用配置类所在的包。 https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#jdbc.java-config
那里发生了奇怪的事情:)
jointable - 在 CrudRepository(Spring data jdbc) 上使用 @query 和表连接
我正在尝试使用 @query 的 spring data jdbc,但遇到了一个问题:如果我有一个查询连接 2 个这样的表:
我如何得到回应?官方的Spring Data JDBC、References 和 Aggregates没有给出任何提示。有什么建议吗?
spring - 使用 Spring Data JDBC 和 CrudRepository 接口的多个数据源
我有一个不简单的问题:
我的情况:
- 使用Spring Data JDBC
- 使用两个数据库
- 的使用
CrudRepository
正如您在Spring Data JDBC中看到的那样,您可以使用Spring开箱即用地获得所有 Crud 操作 - 无需显式实现!extends CrudRepository
这是一个简单的 4 步过程:
- 定义你的属性
- 定义你的实体
- 定义一个扩展 CrudRepository 的接口和
- 使用该接口
但是在使用两个数据库的情况下,有一个 5. 必须定义一个@Configuration
类的步骤。
我做了这5个步骤如下:
0.Pom.xml
1. 定义你的属性
应用程序属性
2.定义您的实体(每个数据库一个)
Student.java // 用于 db1
Teacher.java // 用于 db2
3. 定义您的存储库(每个数据库一个)
StudentRepository.java // 用于 DB1
TeacherRepository.java // 对于 DB2
4. 定义您的@Configuration 类(每个数据库一个)
- 你也可以在一门课上两门课,但我是这样做的:
Db1Config.java
Db2Config.java
5.利用你的接口存储库
应用程序.java
这些工作正常!
这里的问题是,TeacherRepository
不是查询 DB2,而是查询 DB1。
这会导致错误:[...]: Unknown table name:TEACHER
。
有谁知道我如何配置 TeacherRepository 使用 DB2 作为 DataSource ?
# 回答前请注意:
这里我使用的是Spring Data JDBC而不是Spring Data JPA。我知道它可以在Spring Data JPA中工作,如此处所述https://www.baeldung.com/spring-data-jpa-multiple-databases。我也知道我可以利用这些JdbcTemplate
。但是这样,我必须自己编写这些 CRUD 操作,这些操作在这里描述,这不是需要的。
一个答案当然会很好。
谢谢你的帮助。
spring-data-jdbc - Spring Data JDBC不生成派生查询
我正在使用 SpringBoot 2.2.1.RELEASE 自动引入的 Spring Data JDBC (v1.1.1)。对于下面的存储库,该方法应在启动时自动派生查询。
相反,我得到了这个..
我的实体看起来像..
知道为什么我会遇到这个问题吗?
spring-data-jdbc - StatementBuilder 是供外部使用的吗?
我正在使用 spring-data-jdbc 实现一个项目,并找到了 Statement Builder API。我可以使用这个 API 来构建本地 sql 存储库吗?
java - spring-data-jdbc:查询包含具有 1-n 关系的实体
如何为包含 1-n 引用的实体编写查询?
基于spring-data-jdbc示例,我将使用以下单元测试对其进行解释:
这模拟了LegoSet
参考 2Model
秒。使用repository.findByName()
自定义查询进行注释;这repository.findAll()
是标准的 spring-boot-data 方法CrudRepository
(仅作为参考)。
版本 1 中的自定义查询:
在此版本中,测试失败 w/
好的,之后我添加另一个JOIN
到model
:
现在测试失败了
那么我该如何正确编写该查询呢?
spring-boot - spring-data-jdbc:查询实体,包含与 JOOQ 的 1-n 关系
我正在尝试借助 JOOQ(基于 spring-data-jdbc)加载包含对另一个实体(1-n)的引用的实体。
我开始扩展spring-data-jdbc-jooq-example。
具有 1-n 关系的调整模型:
我写了两个查询,一个通过@Query
-Annotation 中的CrudRepository
和一个JOOQ
在JooqRepository
.
(对我来说,这两种方法都应该返回相同的结果集 b/c 他们执行相同的查询?!)
但是我的单元测试失败了:
和
JOOQ
正如您在以下输出中看到的那样,不会加载查询的子类别:
这是使用的数据库-shema:
java - 实体需要什么状态才能触发 [update] 操作?
版本:1.1.2.RELEASE
我有以下简单的测试代码
JobTask 聚合根包含@Id
@Version
@CreatedDate
@CreatedBy
@LastModifiedBy
@LastModifiedDate
注释。
- 为什么
InsertRoot
操作总是触发?在第二个save()
操作中,实体已经有了ID
Value,我明白此时update()
应该触发该操作。 - 是否有关于 的文档
@Version
?我没有找到任何官方的东西。
java - Spring Data JDBC invert OneToOne navigation
I have an existing data scheme I'm reluctant to change. There are two entities/tables: parent
and child
, with parent
having the foreign key column child_id
. It's a 1-to-1 relationship.
The problem is: the magic behind the scenes expects the child table to have the foreign key column (the exception mentions a ...JOIN ON child.parent = parent.id
). Is it possible to inverse this to match the existing scheme? (I know it is with hibernate, but I'd like to stay with JDBC).
Relevant code:
Somewhat related question: Spring Data JDBC invert OneToMany navigation
java - Spring Data JDBC 反转 OneToMany 导航
我有一个不愿意更改的现有数据方案。有两个实体/表:parent
和child
,其中 child 具有外键列parent_id
。这是一个 1(父)对 n(子)的关系。
在 Spring Data JDBC 中是否可以有Child
类引用但Parent
没有属性?也许两者兼而有之?(我知道休眠是可能的,但我想继续使用 JDBC)。Parent
Set<Child>
即我想要这样的东西: