问题标签 [crud-repository]

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 回答
57 浏览

java - 单元测试 CrudRepository.save() 的正确方法

我有一个服务类,它查询CRUDRepository基于id, name and money.

如果数据存在,它会提取钱,添加 100 并将更新的对象保存在存储库中。如果数据不存在,它将创建一个新对象并将其保存在存储库中。

Person.java

Service.Java

我需要为这种存在数据的场景编写一个单元测试。我能够编写测试用例,但问题是myCrudRepository.save()返回null

所以这就是我测试它的方式。

Test.java

0 投票
1 回答
76 浏览

java - 无法在 Spring 中使用 CRUD 存储库删除子实体

父实体:

子实体:

应用代码:

我面临的是:

对于employee表:

对于customer_order表:

所以,我希望在这些字符串执行之后

order1行将从数据库中删除。我想我需要某种方式来触发order1实体保存。我玩过,即使order1保存后,它仍然保留在 dbemployee_idnull。我希望删除孩子,因为我将orders字段配置为orphanRemoval = true.

我的配置:

  • 爪哇:11
  • 休眠:5.4.32
  • 弹簧启动:2.5.3
  • mysql: 8.0.26
  • 弹簧数据-jpa:2.5.3
  • 休眠-jpamodelgen:5.4.32
0 投票
1 回答
65 浏览

spring-boot - IgniteRepository CrudRepository 具有相同的擦除,但都不会覆盖另一个

我已经实现了 ignite 存储库,如下所示 -

点燃配置

使用以下依赖项进行点燃

点燃依赖

Spring Boot 版本依赖项为 2.5.2

春季启动依赖项

运行项目时出现以下错误 -

java:名称冲突:org.springframework.data.repository.CrudRepository 中的 deleteAllById(java.lang.Iterable<? extends java.lang.Long>) 和 org 中的 deleteAllById(java.lang.Iterable<java.lang.Long>) .apache.ignite.springdata22.repository.IgniteRepository 具有相同的擦除,但都不会覆盖另一个

我已经阅读了与 ignite spring data_2.0 解决问题的类似问题相关的线程,但我已经在使用 ignite spring data_2.2 2.9.1。我正在努力寻找正确的解决方案,所以请提出建议。

0 投票
1 回答
50 浏览

java - spring boot jpa app,crudRepo 错误(类型=错误请求,状态=400)。对象验证失败

我正在开发一个简单的 Spring-Boot CRUD 应用程序,我正在尝试使用 CrudRepository 更新或创建新实体实例并保存它们,但我不断收到 (type=Bad Request, status=400) 错误,但我真的没有任何验证,我不知道可能是错误,我正在使用旧版本的 spring-boot 来实现旧的 Java 兼容性,因为我将部署应用程序的服务器。这是我的实体

这是我扩展 CrudRepository 的 Dao 或 repo

这是我的服务

这是服务实现

这是控制器

从给定的参数中,我得到 Tienda id,使用该 ID,我想查看是否是该 Tienda 的 DataDM 实例,如果存在,则使用表单更新它,如果没有实例,则创建并保存它,一切正常(findByTienda 有效)直到我单击表单中的保存按钮,它给了我错误:(类型=错误请求,状态=400)。对象 ='dataDM' 的验证失败。错误计数:1,但我真的没有任何验证来保存 DataDM 实体,我想它必须与 save() 方法有关,但我不知道可能是什么,有人可以帮助我吗?

编辑:添加客户端代码

0 投票
2 回答
55 浏览

java - 有没有办法使用来自 DynamoDB 的 CrudRepository 按给定值获取列表中的所有记录?

我正在尝试从“消息”表中获取所有记录,但问题是“角色”在 dynamo DB 中保存为数组,我需要获取每个记录具有“INSTRUCTOR”角色的所有记录。

dynamoDB 中可用的记录如下。

记录 1

{ "product": "Maths", "messageSummary": "test message", "roles": [ "ADMIN", "INSTRUCTOR" ], "title": "My course1", "createdBy": 0, "authorName" : "测试作者", "id": "1" }

记录 2

{ "product": "Maths", "messageSummary": "test message", "roles": [ "STUDENT" ], "title": "My course2", "createdBy": 0, "authorName": "test author ", "id": "2" }

记录 3

{ "product": "Maths", "messageSummary": "test message", "roles": [ "INSTRUCTOR", "STUDENT" ], "title": "My course3", "createdBy": 0, "authorName" : "测试作者", "id": "3" }

消息模型类如下,引用“消息”表

消息存储库如下扩展 CrudRepository

由于我需要获取所有具有 INSTRUCTOR 角色的记录,因此记录 1 和记录 3应该在结果列表中。但是,我只能使用产品值过滤它,但不能使用角色过滤。

此外,我尝试使用一些关键字,例如包含、喜欢、在等,但这些对我来说都没有成功。根据我的观察,这些关键字不支持从数组中过滤特定值。

并得到这个错误

如何使用 CrudRepository 实现这一目标并实现这样的条件?

0 投票
0 回答
42 浏览

spring - Spring JPA查询未获取参数

嗨,我正在将 spring 与 JPA 和 Crud Repository 一起使用,但我在使用 findById() 时遇到问题,当我使用 findAll 时,我没有遇到问题并获取数据库中的所有数据。

但是使用 FindById() 查询打印如下(我也尝试使用 nativeQuery 但我得到了相同的结果):

SELECT * from TABLE_USERS where ID_USR_PK = ?

实体代码:

带有 QueryNative 测试的 CrudRepository 接口:

你有什么想法可以帮我解决吗?

0 投票
0 回答
80 浏览

java - 找不到类型类 java.time.OffsetDateTime 的 PersistentEntity!Spring Boot 2.6 更新后

我有 crudRepository 接口和名为 findLastUpdatedTimeByName 的方法:

当我有 Spring Boot 2.5.7 版时,一切正常。但是在将 Spring Boot 更新到 2.6.3 版之后,当调用 findLastUpdatedTimeByName 方法时出现异常:

想不通,好像有什么问题。你们有什么想法吗?


编辑:我发现只有当查询结果为空时才会出现这个问题。但由于某种原因,spring 无法将其映射到 Optional.empty()

0 投票
1 回答
21 浏览

java - Spring没有在数据库中保存多对多映射

我有 2 个实体。约会和项目。它们都是独立的,我们可以在多个约会中拥有多个项目。

约会类:

和项目类:

这里省略了构造函数、getter 和 setter。

Appointment 控制器内部还有一个 patch 方法。

现在,尽管在调试器中看到,已在 appoitment 的列表中添加了一个项目,但保存不会将更改闪存到数据库中。

在此处输入图像描述

这是数据库:

数据库

知道我缺少什么吗?非常感谢,女士们,先生们。

0 投票
2 回答
58 浏览

java - 在从类生成的模式和从文件加载的初始数据之后插入新条目时出现 JdbcSQLIntegrityConstraintViolationException

我有一个带有 h2 数据库的 spring boot 项目。

我有一个要从中生成架构的实体类:

我有一个data.sql文件:

我的 application.properties 是:

应用程序启动得很好,我可以通过 localhost:8080/h2-console 确认数据已加载到数据库中。但我无法将新数据保存到表中

错误信息是:

我假设这意味着 spring 想要在 id=1 处插入新名称,而没有意识到 ids 1 和 2 已经在使用中。我想正确的参数@GeneratedValue可以修复它,但我不明白它们的含义以及选择哪一个。

试验和错误:

@GeneratedValue(strategy = GenerationType.AUTO)是默认值,见上文。
@GeneratedValue(strategy = GenerationType.TABLE)相同的错误
@GeneratedValue(strategy = GenerationType.SEQUENCE)相同的错误
@GeneratedValue(strategy = GenerationType.IDENTITY)不同的错误:

所以显然它不是注释,而是别的东西。

我放弃了,这是我的 MRE:https ://github.com/timo-a/duckpond-spring-backend/tree/debug/saving

0 投票
2 回答
31 浏览

java - Spring Boot (JPA) CrudRepository 中自动生成的 SQL 查询不正确

我的存储库接口

SongsRepository

AlbumsRepository


我的模型类

Album.java

Song.java


我的控制器

SongsController.java


服务类

Services.java


我的视图模型

SongViewModel


记录的 SQL 查询
select song0_.song_id as song_id1_1_, song0_.album_album_id as album_al5_1_, song0_.album_id as album_id2_1_, song0_.song_duration as song_dur3_1_, song0_.song_name as song_nam4_1_ from dbo.songs song0_


错误
ERROR: column song0_.album_album_id does not exist


我的数据库模式(PostgreSQL 12.10.1)


这是我第一次使用 Spring Boot 和 JPA。我在这里做错了什么?


从错误消息中,我猜测它正在尝试查找album_album_id我的数据库中不存在的名为的列,因此无法找到它;但它为什么要搜索那个特定的列?(我的猜测是我搞砸了关系属性)。