我有下面的方法,它代表两个不同的表,并与一个公共列domain_id
连接,我的观点是,我无法编写JPQL来实现相同的目的,而不是通过下面的方法
@Override
public List<SrityDTO> getByCommonColumn(int id) throws Exception {
Optional<main> ntOptional = ntRepository.findById(id);
if (ntOptional.isPresent()) {
List<rity> rities = rityRepository.findByntDomain(ntOptional.get());
return rities.stream()
.map(SrityDTO::new)
.collect(Collectors.toList());
} else {
throw new Exception(" not exist.");
}
}
最佳答案
我将假设您的类名中有错别字,因为在Java中所有class names should have capitalized at least first letter
您的查询可能如下所示:
@Query("SELECT NEW example.SrityDTO(r.id, r.name) FROM Rity r JOIN r.main m WHERE m.id = :domainId")
List<SrityDTO> getByCommonColumn(@Param("domainId") int id)