条件生成器和jquery数据表-自定义查询

uxh89sit  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(481)

我将jquery数据表与spring jpa一起使用。我想创建一个自定义查询,这样我的datatable将根据多通相关对象的id显示一个项目列表。

  1. public class SezioniDTO {
  2. private static final long serialVersionUID = 1L;
  3. private long id;
  4. private LocalDate sezDtaggiornamento;
  5. private Comune Comune;
  6. }
  1. public class Comune {
  2. private static final long serialVersionUID = 1L;
  3. private long id;
  4. private String comCap;
  5. private String comCodbelfiore;
  6. private String comCodcomune;
  7. }

这些是我的类(我使用mapstruct从实体MapDTO)。如何在我的存储库和服务中使用criteria builder根据Comune id搜索sezionis?
我是querydsl和规范的新手,我只想获得如下内容:

  1. @Query("Select * from Sezioni s WHERE s.id_Comune = :id", native="true")
  2. public DataTablesOutput <Object> findByField (@Param(value="id", input);
3npbholx

3npbholx1#

定义实体:

  1. @Entity
  2. public class Sezioni {
  3. @Id
  4. @GeneratedValue(strategy = GenerationType.IDENTITY)
  5. private Long id;
  6. private LocalDate sezDtaggiornamento;
  7. @OneToOne(cascade = {CascadeType.ALL})
  8. @JoinColumn(name = "comune_id")
  9. private Comune Comune;
  10. // getters & setter are omitted
  11. }

  1. @Entity
  2. public class Comune {
  3. @Id
  4. @GeneratedValue(strategy = GenerationType.IDENTITY)
  5. private Long id;
  6. private String comCap;
  7. private String comCodbelfiore;
  8. private String comCodcomune;
  9. // getters & setter are omitted
  10. }

定义存储库

  1. @Repository
  2. public interface SezioniRepository extends JpaRepository<Sezioni, Long> {
  3. @Query("select s from Sezioni s where s.Comune.id = :id")
  4. List<Sezioni> findByComuneId(Long id);
  5. }

使用(在测试中)

  1. @DataJpaTest
  2. class SezioniRepositoryTest {
  3. @Autowired
  4. SezioniRepository sezioniRepository;
  5. @BeforeEach
  6. void setUp() {
  7. Comune comune = new Comune();
  8. comune.setComCap("cap42");
  9. comune.setComCodcomune("cod43");
  10. Sezioni sezioni = new Sezioni();
  11. sezioni.setComune(comune);
  12. sezioni.setSezDtaggiornamento(LocalDate.of(1970, 1, 1));
  13. sezioniRepository.save(sezioni);
  14. }
  15. @Test
  16. void test() {
  17. List<Sezioni> sezionis = sezioniRepository.findByComuneId(1L);
  18. assertEquals(1, sezionis.size());
  19. assertEquals("cap42",sezionis.get(0).getComune().getComCap());
  20. }
  21. }

接下来,您可以使用mapstruct将实体Map到dto(如果您希望在api上公开dto)

展开查看全部

相关问题