首页 > 解决方案 > Spring Data 存储一个对象,然后使用查询在测试中找到它

问题描述

我有一个使用 H2 和@DataJpaTest. 该代码在作为服务运行时运行良好。

我存储一个对象,然后使用查询来查找它。但是,该对象永远不会返回。出于某种原因,尽管从repository.save(object)

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = TestConfig.class)
@DataJpaTest
public class MyObjectRepositoryTest {

    @Autowired
    private MyObjectRepository myObjectRepository;

    @Test
    public void saveAndFindObject() {
        MyObject object = new MyObject
        object.setName("John");
        repository.save(object);
        MyObject returnedObject = repository.findByName("John");
    }
}

实体

@Entity
@Table(name = "my_object")
@Data
public class MyObject{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    //All caps for Spring Batch reasons
    @Column(name = "name")
    private String NAME;

}

它已经封装在事务中,因此应该共享会话,但返回的对象仍然存在null。如何确保我可以查询我专门存储在单元测试中的对象?

编辑:正如@wjans 暗示的那样,这适用于干净项目的测试套件。我没有发现这种奇怪行为的明确原因,但我正在通过测试资源顶部文件夹中的 data.sql 文件解决它,因为数据读取正常。

标签: javaspring-bootunit-testingh2spring-test

解决方案


推荐阅读