我将 jquery 数据表与 Spring JPA 一起使用。 我想创建一个自定义查询,以便我的数据表将根据 ManyToOne 相关对象的 id 显示项目列表。
附注。我显然已经为这些 DTO 声明了存储库、映射器和实体,我只是避免编写所有类,因为我觉得它没用。
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 从实体映射 dtos)。 如何在我的存储库和服务中使用条件构建器根据 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,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 仅适用于规范,我根本不了解。 我只是想创建一个类似于我在 repo 中的 public List 的方法,但返回的是 DataTablesOutput。