草庐IT

JPARepository

全部标签

java - Spring JpaRepository : delete() with subsequent save() in the same transaction

我的实体同时具有自动生成的主键(id)和业务键(命名空间)。我需要通过替换旧记录来更新记录。所以,我正在按业务键搜索它,删除它并保存一个新实体。如果它自己的事务中的每个操作都有效。但是一旦我把它们都放在同一个事务中,当save()被执行时,delete()还没有被执行,所以我得到了一个约束违规。transactionTemplate.execute(status->{MyEntityoldEntity=repository.findByNamespace(namespace);if(oldEntity!=null){repository.delete(oldEntity);}repos

spring - 在 STS 3.1 的 Spring Data JpaRepository 接口(interface)中到处出现 "Invalid derived query"错误

我们已经完全按照SpringData文档中的说明实现了我们的存储库。在我们从STS2.9升级到STS3.1之前,一切都很好。所有试图让这些错误消失的尝试都失败了,在某些情况下甚至没有意义!它们与界面或使用的实体中的任何属性都不匹配!这是一个例子:publicinterfaceCreditNotesRepositoryextendsJpaRepository{CreditNotesfindCurrentCreditNotes(LongshipmentDetailId);}findCurrentCreditNotes是我们实体中的命名查询。这段代码执行得很好。@NamedQueries({

java - Spring JpaRepository - 分离和附加实体

我在jpa上使用springboot和hibernate。我正在使用JpaRepository接口(interface)来实现我的存储库。与以下UserRepository一样publicinterfaceUserRepositoryextendsJpaRepository{}我想实现以下目标加载用户实体。改变实体对象的状态,例如user.setName("foo")进行外部系统网络服务调用。将调用结果保存在数据库中只有在成功响应此Web服务调用时,才将用户的新状态保存在存储库中。上述所有步骤都没有发生在一个事务中,即外部服务调用不在事务中。当我通过其存储库将我的Web服务结果保存到D

java - Spring Data JPARepository : How to conditionally fetch children entites

除非提供了某个执行参数,否则如何配置他们的JPA实体以不获取相关实体。根据Spring的文档,4.3.9.ConfiguringFetch-andLoadGraphs,您需要使用@EntityGraph注释来指定查询的获取策略,但这并不能让我在运行时决定是否要加载这些实体。我可以在单独的查询中获取子实体,但为了做到这一点,我需要将我的存储库或实体配置为不检索任何子实体。不幸的是,我似乎找不到任何关于如何做到这一点的策略。FetchPolicy被忽略,EntityGraph仅在指定我想要急切检索的实体时才有用。例如,假设Account是父级,Contact是子级,并且一个Account可

hibernate - 如何使用 JpaRepository 进行批量(多行)插入?

调用saveAll时我的方法JpaRepository很长List从服务层来看,Hibernate的跟踪日志显示每个实体发出的单个SQL语句。我可以强制它进行批量插入(即多行)而不需要手动摆弄EntityManger、事务等,甚至是原始SQL语句字符串?对于多行插入,我的意思不仅仅是从:starttransactionINSERTINTOtableVALUES(1,2)endtransactionstarttransactionINSERTINTOtableVALUES(3,4)endtransactionstarttransactionINSERTINTOtableVALUES(5,

java - Spring JpaRepository 中的 %Like% 查询

我想在JpaRepository中写一个类似的查询,但它没有返回任何内容:LIKE'%place%'-它不起作用。LIKE'place'完美运行。这是我的代码:@Repository("registerUserRepository")publicinterfaceRegisterUserRepositoryextendsJpaRepository{@Query("SelectcfromRegistrationcwherec.placelike:place")ListfindByPlaceContaining(@Param("place")Stringplace);}