【发布时间】:2021-10-02 16:14:56
【问题描述】:
我将 jquery 数据表与 Spring JPA 一起使用。 我想创建一个自定义查询,以便我的 Datatable 将根据 ManyToOne 相关对象的 id 显示项目列表。
PS。我显然已经为这些 DTO 声明了 Repositories、Mapper 和 Entities,我只是避免编写所有类,因为我发现它没用。
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 从实体映射 dto)。 我如何在我的存储库和服务中使用标准构建器来根据 Comunes id 搜索 Sezionis?
我是 QueryDSL 和规范的新手,我只想获得这样的东西:
@Query("Select * from Sezioni s WHERE s.id_Comune = :id", native="true")
public DataTablesOutput <Object> findByField (@Param(value="id", input);
这是当前的服务实现
@Service
public class SezioniServiceImpl implements SezioniService{
@Autowired
SezioniRepository repo;
@Autowired
SezioniMapper mapper;
@Autowired
SezioniSpecifications sezSpec;
@Override
public List<SezioniDTO> findAll() {
return repo.findAll().stream().map(x -> mapper.entityToDto(x, new CycleAvoidingMappingContext()))
.collect(Collectors.toList());
}
@Override
public List<SezioniDTO> findByIdComune(Long idcom){
return repo.findSezionibyIdComune(idcom).stream().map(x -> mapper.entityToDto(x, new CycleAvoidingMappingContext()))
.collect(Collectors.toList());
}
@Override
public SezioniDTO save(SezioniDTO entity) {
return null;
}
@Override
public Optional<SezioniDTO> findById(Long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void delete(SezioniDTO entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteById(Long id) {
// TODO Auto-generated method stub
}
@Override
public long count() {
// TODO Auto-generated method stub
return 0;
}
@Override
public DataTablesOutput<SezioniDTO> getSezioniTable(@Valid DataTablesInput input) {
return repo.findAll(input, null, null, a -> mapper.entityToDto(a, new CycleAvoidingMappingContext()) );
}
}
以及 SezioniDTO 的当前存储库
@Repository
public interface SezioniRepository extends JpaRepository<Sezione,Long>, JpaSpecificationExecutor<Sezione>, DataTablesRepository<Sezione,Long> {
@Query(value = "SELECT * FROM db.sezione WHERE sez_com_prg = :id ORDER BY sez_numsezione", nativeQuery = true)
public List <Sezione> findSezionibyIdCom(@Param(value = "id") Long id);
}
Sezione 是当前实体。如您所见,它 extends 和 DataTablesOutput 仅适用于 Specifications,我根本不了解。 我只是想创建一个类似于我在 repo 中的公共 List 的方法,但使用 DataTablesOutput 返回。
【问题讨论】:
标签: java jquery datatables spring-data-jpa querydsl