当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA存储库CRUD测试

倪鸿禧
2023-03-14

我在玩spring数据存储库,有一个关于编写CRUD测试的问题。我针对Hibernate DAO和EJB3实体bean编写了许多CRUD测试,在这些测试中,我创建和实体,将其刷新到数据库中,清除实体管理器,并按ID读回它。实体管理器被清除,因此第一级缓存不会在读取时被击中。

使用spring数据存储库,我找不到一种方法来清除测试使用的底层实体管理器,这样我的读取就不会返回到实际的数据库,使我的测试无效。

有没有办法在测试中清除实体管理器?有没有一种方法我可以将一个注入到我的测试中,以便它被存储库使用?

谢谢!

科里。

共有2个答案

陶超
2023-03-14

如果希望自动清除EntityManager,可以将@modifying annotation的ClearAutomatical属性设置为true。请看这里

穆鸿卓
2023-03-14

通过像这样注入entitymanager来尝试一下:

@PersistenceContext
EntityManager entityManager

并通过在测试方法上设置@transactional属性使测试事务化。然后可以在方法内部调用EntityManager.Flush()方法。

问候

 类似资料:
  • 我有一个数据已经保存在我的数据库基于我的存储库和服务。我想保存另一个数据与邮递员只改变播放器id。但它不是创建一个新的实体数据。它更新现有的实体数据。我的问题是如何更新一个数据由我的服务当它找到一个现有的id。但当它找到一个新的id将保存一个新的数据到数据库。 这是我的回购: 这是我的服务:

  • 我与SpringBoot和JPA合作。我收到一个无法完成的错误。 这是我的主要课程: 这是我的班级失败的原因: 这是类: 这是错误消息: 错误创建bean的名称'请求LoggerImpl':注入自动生成的依赖失败; 无法自动关联字段:专用com。存储库。请求logdao.com。记录器。impl。RequestLoggerImpl。请求logdao;嵌套的异常是org。springframewor

  • 我有以下JPA实体 这是我检查唯一约束的测试,插入具有相同电子邮件的另一个用户。

  • 我不熟悉使用CRUD存储库。 我有一个包含三列的数据库表: course_id,姓名,当然 我想得到一份course\u id name的列表,例如, 但是,我不想使用查询,而是使用crud存储库。 我的控制器显示有错误。我可以知道有这个错误吗? 我的控制器 服务 存储库

  • 我正在使用100个实体(使用JHipster)设置一个新的Spring Boot API,我的问题是:鉴于我有一组存储库层方法,我希望我的所有存储库都能够调用这些方法。 我已经尝试制作所有接口来扩展('RepositoryQuery'是我默认的自定义接口名称后缀),然后使用特定于实体的类。请注意,所有的类扩展了一个泛型实现类,名为。 请注意,给定正则表达式中的“.*”代表我的持久实体集中的任何实体

  • 这根本不是关于Spring靴的。 我的英语可以更好。 使用下面的Spring Data配置,我正在尝试执行DML请求。 恰好是< code>CrudRepository#save方法。 然而,执行Spring的CrudRepository#保存方法,我接下来要做的是: 只有选择由功能记录。 没有执行任何“插入”或“更新”语句来hibernate.show_sql日志记录。 数据库根本没有变化。 =