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

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

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

public class SezioniDTO {
    private static final long serialVersionUID = 1L;

    private long id;

    private LocalDate sezDtaggiornamento;

    private Comune Comune;

}
public class Comune {

    private static final long serialVersionUID = 1L;    

    private long id;

    private String comCap;

    private String comCodbelfiore;

    private String comCodcomune;

}

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

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

3npbholx1#

定义实体:

@Entity
    public class Sezioni {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private LocalDate sezDtaggiornamento;

        @OneToOne(cascade = {CascadeType.ALL})
        @JoinColumn(name = "comune_id")
        private Comune Comune;

        // getters & setter are omitted
    }

@Entity
    public class Comune {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String comCap;
        private String comCodbelfiore;
        private String comCodcomune;

        // getters & setter are omitted
    }

定义存储库

@Repository
    public interface SezioniRepository extends JpaRepository<Sezioni, Long> {

        @Query("select s from Sezioni s where s.Comune.id = :id")
        List<Sezioni> findByComuneId(Long id);
    }

使用(在测试中)

@DataJpaTest
    class SezioniRepositoryTest {
        @Autowired
        SezioniRepository sezioniRepository;

        @BeforeEach
        void setUp() {
            Comune comune = new Comune();
            comune.setComCap("cap42");
            comune.setComCodcomune("cod43");

            Sezioni sezioni = new Sezioni();
            sezioni.setComune(comune);
            sezioni.setSezDtaggiornamento(LocalDate.of(1970, 1, 1));

            sezioniRepository.save(sezioni);
        }

        @Test
        void test() {
            List<Sezioni> sezionis = sezioniRepository.findByComuneId(1L);
            assertEquals(1, sezionis.size());
            assertEquals("cap42",sezionis.get(0).getComune().getComCap());
        }
    }

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

相关问题