问题标签 [spring-repositories]

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 投票
2 回答
7632 浏览

hibernate - 如何在内存数据库中使用 H2 调试 Spring Boot 存储库?

我正在开发 Spring Boot 并尝试使用 H2 数据库(在内存中)进行单元测试。我的 Spring Data 存储库实现不起作用,我需要帮助来调试它。

我已将我的项目(不使用原始项目)简化为以下示例以隔离和演示问题。该项目可以在GitHub中找到。

Eclipse项目结构:

项目结构

pom.xml:

应用程序属性:

主要配置类:

学生实体类:

StudentRepository 类:

StudentRepositoryTester 类:

数据.sql:

架构.sql:

我可以在控制台日志中看到 H2 已填充,因为我可以看到 data.sql 中的语句已执行。我在日志中没有看到任何可疑之处。

具体问题:

  1. 运行 StudentRepositoryTester 测试类,我看到(在断言语句上有断点)没有返回任何实体。我不明白为什么。也许我错过了 Spring Boot 配置注释中的某些内容?

  2. 我试图检查断点中的数据库内容,但我找不到探索 H2 数据库的方法。我按照本教程打开 H2 的 Web 浏览器应用程序,但在 localhost:8080 中没有提供任何服务。难道我做错了什么?或者,是否有另一种方法来调试 H2 数据库(在内存中)中发生的事情?

请注意,相应的 Eclipse 项目已上传到GitHub以方便讨论。

0 投票
1 回答
62 浏览

java - List.clear() 与参考重新分配性能

在我的代码中,我一直在使用存储库的findAll查询 10k 个项目的列表。

我只分配了一个List引用,findAll然后为 的项目运行一个循环List

数据库中的总记录通常是 10K 的几倍,即循环当前迭代 6 到 12 次之间的某处。

我观察到的是,在大约 20K 读取项目之后,该循环中的连续处理开始花费更多时间。

List.addAll()如果我使用项目并且在添加下一个项目之前,我没有分配参考,而是使用然后迭代的执行时间保持不变并且不会连续增加findAll来清除列表。List.clear()

迭代时间增加的代码,

恒定时间,

不知道为什么对象的间隙也应该在第一个实例中被垃圾收集?

相关问题 - list.clear() vs list = new ArrayList()

0 投票
1 回答
427 浏览

java - 在 Spring @Query 注释中对 Oracle / PostgreSql 使用特定的本机查询

我有一种spring repository方法native

这个查询是针对 Oracle 的,但我也有 PostgreSQL,我需要为 PostgreSQL 创建本机查询,当我使用 Postgres 配置文件启动我的 spring boot 服务器时,我需要使用这个查询。当我从 Oracle 配置文件开始时,我需要使用 Oracle 查询。

例如,我可以将查询字符串移动到配置文件:

但是如何将此字符串传递给@Query注释?像这样的东西:

也许有正确的方法可以做到这一点?

0 投票
1 回答
1845 浏览

spring - Spring data JPA + Native query - 根据配置文件替换查询字符串

我有服务:

这是我的存储库:

oracle profile如果我用我调用findReadyToSendOracle方法和 if postgre profile-方法启动 spring boot 服务器findReadyToSendPostgre。这行得通。但是这个解决方案很糟糕。我认为。因为我为配置文件检查编写硬代码。我的存储库有 2 种用于不同数据库的方法。

如何正确实施?

0 投票
0 回答
883 浏览

spring - 搜索方法中的 ResourceNotFoundException

我正在尝试在 Rest 中公开我用 Spring 编写的存储库

编译正常,没有警告。如果我理解得很好,下面的 url 应该返回我的自定义查询方法 http://127.0.0.1:8080/product/search/findByBizid?bizid=AB

但是我得到了一个空响应,并且在 Intellijidea 的 spring 控制台中引发并显示了一个 spring 异常:

WARN 39290 --- [nio-8080-exec-1] .mmaExceptionHandlerExceptionResolver:已解决由处理程序执行引起的异常:org.springframework.data.rest.webmvc.ResourceNotFoundException:找不到资源!

我花了整整一夜,我完全迷失了

我试图简化我的代码,复制粘贴一些教程示例,但没有任何效果。

我发现127.0.0.1:8080/product/search方法也不起作用。即使我正在删除我的海关方法。

知道如何调试吗?

安东尼

更新:我忘了告诉经典存储库列表运行良好:127.0.0.1:8080/product 正在检索数据库中的所有产品

0 投票
1 回答
3357 浏览

jpa - 如何在 Spring JpaRepository 中使用 JPQL 选择组中的最新记录?

在 SpringBoot 微服务中,我试图为每个 mean_of_payment_id 选择一个演员的最新记录。为此,使用 mean_of_payment_id 上的 group by 子句为 actor_id 选择演员内容,其中 created_date 等于 max(created_date) 的嵌套查询的子集。我正在使用 JPQL。下面是表结构和查询。

在此处输入图像描述

在此处输入图像描述

不幸的是,执行查询后,我得到了所有记录,但我期望的是前三行。MeanOfPayment 和 Actor 是 ActorContent 的参考表。

0 投票
1 回答
451 浏览

angularjs - 具有 Spring Boot MongoDB 存储库的多个数据库动态

我需要修改我的 Spring-Boot 应用程序以动态管理 Mongo 驱动程序的动态实例。在我的应用程序中,Spring Boot MongoDB Repositories 已经配置好了,现在可以了。对于新要求,我们要实现 sass(动态租户),其中一个是主数据库,另一个是动态选择数据库。现在的问题是,当我们选择任何租户时,如何在应用程序中动态配置 spring Boot another MongoDB Repositories。例如:假设 5 个租户在应用程序内动态选择其中任何一个,另一个 DB 随机选择

0 投票
1 回答
910 浏览

hibernate - Spring JPA no @Transnational 保存 JpaRepository

默认情况下,用户定义的存储库方法是只读的,修改查询被 @Transactional 覆盖,来自 Spring 的 SimpleJpaRepository 的示例:

我注意到 JpaRepository 没有用 @Transactional 覆盖 save :

保存方法在里面CrudRepository(这里没有跨国)

那么在没有@Transnational 示例的情况下扩展 JpaRepository 时保存方法的工作原理:

这里没有交易

0 投票
4 回答
5470 浏览

java - 使用 Spring Boot 从数据库中检索列表

我有一个以findall_db一个名为...的表命名的数据库person我已经手动向该表添加了一些值,并希望使用 Spring Boot 检索它们。这就是我所拥有的,但我的控制器中不断出现此错误:Type mismatch: cannot convert from Iterable<PersonInfo> to List<PersonInfo>

实体类是:

存储库类是:

控制器是:

0 投票
1 回答
520 浏览

java - RepositoryRestExceptionHandler :对象不是托管实体

设想:

SpringBoot 执行器:

实体:

回购:

配置类。一个用于 Live,另一个用于开发/测试。

当 SpringBoot 应用程序正在执行时,我做了一个 curl 我得到了积极的回应:

通过 unix 终端发布:

回复:

通过 UNIX 终端获取:

回复:

测试用例:

现在,当我尝试使用 Jupiter 执行集成测试时,挑战就来了。我的测试因奇怪的堆栈跟踪而失败,这对我来说意义不大。错误信息:

意义不大。还有人知道那是什么意思吗?