我试图通过这个实现在Spring Data JPA中实现带有规范的投影:
https://github.com/pramoth/specification-with-projection
相关课程如下:
规格:
public class TopicSpec {
public static Specification<Topic> idEq(String id){
return (root, query, cb) -> cb.equal(root.get(Topic_.id),id);
}
}
存储库
@Repository
public interface TopicRepository extends JpaRepository<Topic,String>,JpaSpecificationExecutorWithProjection<Topic> {
public static interface TopicSimple{
String getId();
String getName();
}
List<TopicSimple> findById(String id);
}
测试
@Test
public void specificationWithProjection() {
Specification<Topic> where= Specifications.where(TopicSpec.idEq("Bir"));
List<Topic> all = topicRepository.findAll(where);
Assertions.assertThat(all).isNotEmpty();
}
我从Get方法获得此响应:
然而测试失败了。此外,当我拉动pramoth的github项目时,我可以成功运行测试。有没有人对这个问题有任何意见?
完整的项目可以在这里找到: https://github.com/dengizik/projectionDemo
答案 0 :(得分:0)
我向Pramoth Suwanpech项目的开发人员提出了同样的问题,他非常友好地检查我的代码并给出答案。我的测试类应该像这样实现测试对象:
@Before
public void init() {
Topic topic = new Topic();
topic.setId("İki");
topic.setName("Hello");
topicRepository.save(topic); }
通过此设置,测试通过。