我有下面的方法,它代表两个不同的表,并与一个公共列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)

10-01 05:43