问题标签 [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.
java - 在 Spring Data 中重置 @OneToMany 中的子级列表
我正在使用 Spring Data 中的 CrudRepository 接口进行持久性,我想重置 OneToMany 关系中的子列表:清除所有现有子级并在同一个 save() 方法中附加新的子级
问题是子列表在从父对象中清除后似乎不为空,save 方法保留了旧子项和新子项之间的组合:得到一个与约束唯一性相关的错误:
父实体:
子实体:
更新动作:
当我尝试删除第一个保存时,我收到一个错误,例如(重复条目 'Key_01-1012' for key 'UI_KEY_NAME')证明旧的孩子没有被删除
如何使用一种保存方法重置儿童列表,在此先感谢!
java - 使用 Java Spring 和 CrudRepository,是否可以在表中插入新行而不用值填充每一列?
我正在做一个项目,我需要定期用行填充一个四列表。数据库是postgresql。这些列是 string1、date1、string2、date2。我已经用 SQLAlchemy 在 python 中测试了这个项目,我在初始插入时填充了 string1 和 date1,后来填充了 string2 和 date2。由于项目逻辑,string2 和 date2 在插入时不可用,并且可能会在初始插入后数周更新。使用 SQLAlchemy,我可以简单地执行如下插入操作:
我也可以这样做:
现在,我需要在 Java Spring 中创建项目(我没有太多经验),并且 CrudRepository.save() 方法不允许我以上述任何一种方式进行。它坚持必须为每一列设置某种值(对应于正确的数据类型,截至目前我使用 LocalDate 作为日期,但任何 Date 数据类型都可以)。我现在的解决方法是设置 string2 = "" 和 date2 = LocalDate.parse("0001-01-01"),但这是一个低于标准的解决方案。我想发送一个 Null/None 值,以便 postgres 将其插入为 .
目前实体:
发帖逻辑:
postgresql - Spring JPA Crud Repository findAll() 性能改进
在我的项目中,我在 postgres 数据库的一个表中存储了大量行(约 3 亿条记录)。一行包含 77 列,其中包含字符串、整数类型,很少有布尔值和日期。我的问题是,当我尝试在 GUI 上浏览记录时,即使我的数据库仅包含其最终容量的 3%,它的运行速度也非常慢。
对于使用 Spring JPA 的 DB 连接和使用分页的 findAll() 方法,当我在 DB(3.3GB) 中有大约 1000 万条记录时,每页 20 条记录需要将近 3.5 秒(添加索引之后,在 7.5 秒之前)。如果我从 pgsql cli 执行相同类型的查询
slelect * from myTable order by column1 limit 20;
我立即得到相同的结果集,因此 postgres 性能没有问题。使用本机查询覆盖 findAll() 的默认实现将时间减少到大约 2.8 秒,这仍然很长,我也尝试仅使用包含 77 列中的 6 列的视图来获取少数社区,但它并没有太大变化。
有什么建议可以在哪里查看或如何提高此应用程序仍可用于包含 30 倍以上记录的数据库的性能?
PS App 只不过是用于浏览这些记录的 GUI,此外每 15 分钟插入约 50K 的新记录。我的虚拟机分配了 8 个 vCPU 和 12GB 的 RAM。
java - CrudRepository 返回 null
我找不到哪里有问题。我正在通过用户名和密码在数据库中搜索用户。但它返回null。
这是我的存储库:
这是我的服务:
当我调试我的应用程序时,我在“findByUsernameAndPassword(username, password);”中看到了 用户写入的信息存在,但方法返回 null。
这里有什么问题?
spring - 如何在 JpaRepository(CrudRepository) 中实现方法
你好!我在 Kotlin 中使用 JapRepositoy 时遇到问题。如您所知,Spring Data Jpa 通过解释方法名称来创建查询。请参阅上面的代码块。你可以看到方法“findBySomethingId”。spring jpa 解释该名称并创建“select * from temp where somthing_id = *”。但我想手动实现该方法。(我不希望 spring 使用方法名称创建查询”
但是当我启动 spring 时,我遇到错误消息“无法为方法创建查询..”,实际上“something_id”列不存在。但是我必须根据需要使用该方法名称所以我正在寻找一些注释来制作“jpa data”以根据方法的实现创建查询,而不是依赖于方法的名称
我需要做什么。谢谢
java - CrudRepository 的 deleteById 方法只生成选择查询,不生成删除查询
我正在尝试使用 CrudRepository 的 deleteById 方法删除一行,但它不工作/删除该行。我启用了休眠日志以查看休眠生成的查询。对于 deleteById 方法:- 它只生成选择查询,而不是删除查询。有人遇到过这个问题吗?我还尝试了不同的衍生删除方法。这是来自 Hibernate 的相同响应。但是对于不同的方法,比如 find 它工作正常并生成选择查询。我在这里缺少任何基本的东西吗?
我的实体类:-
我的应用程序存储库:-
我的应用程序服务方法:-
spring-mvc - Spring JPA:添加具有当前用户 ID 的实体作为外键
我正在使用 Thymeleaf HTML 注册表单和简单的保存/更新方法将“dish”对象保存/更新到 mySQL 数据库。餐厅 ID 是“菜”的外键,但使用以下方法将其保存为“空”,
我想让当前登录的餐厅老板的餐厅 ID 在他们添加菜肴时自动保存。
有没有简单的方法来做到这一点?我在 Youtube 上找到的最接近的教程涉及在 Postman 中使用 JSON 请求,过去我在将其调整为 HTML 注册表单时遇到了问题。
我对这一切都很陌生,所以非常感谢任何帮助!
见菜类:
参见 AppUser(restaurant owner) 类
请参阅控制器类:
见服务实施
见服务类
java - 通过主键中的字段从具有 EmbeddedId 的 JPARepository 中删除
目前我有一个使用 JpaRepository<Employee, EmployeePk> 的 Spring Boot 应用程序,假设 EmployeePk 是名字,姓氏。有没有办法通过主键字段删除而不必指定自定义@Query?如果多个人被命名为“John”,则可以删除多行。
例子:
如
员工类和嵌入式 PK
java - findbyID returns optional . setting this object to another object cause error
student and program are DTO , if i change setProgram(StudyProgram) method to setProgram(Optional) then it interfere with database scheme. what will be the solution ?
java - 无论使用 mockito 的参数如何模拟存储库方法
我正在使用 spring 框架并使用 Junit 和 mockito 进行测试。
现在我的服务中有一个方法,它使用了我在测试中创建的一些对象,我们称它们为 configObject1 和 configObject2,我将它们作为参数发送给该方法,然后该方法开始对另一个存储库进行一些调用那些配置对象,那些存储库被模拟并且运行良好,该方法从这些查询/配置对象中创建一个“CalculusResult”列表。之后,我使用扩展 CRUDRepository 的存储库并创建 saveAll()。然后它应该返回一个带有实体的可迭代对象,但由于某种原因,在 saveAll 方法之后它返回一个空列表。
测试:
来自服务的方法:
存储库:
我不确定,但我认为问题可能是我在测试中创建的对象与服务中的对象不同,因为其中一个属性是创建它的那一刻的 sql 日期,所以它可能没有触发测试中的“when(calculusRepository.saveAll(reslist)...”,因为在测试中创建的对象和在服务中创建的对象在该属性中具有不同的日期。
如果是这种情况,有没有办法解决它?还是问题完全不同?