Java 存储库接口中的MySQLSyntaxErrorException

Java 存储库接口中的MySQLSyntaxErrorException,java,mysql,spring,jpa,Java,Mysql,Spring,Jpa,我正在使用下面的代码: @RestResource(exported = false) public interface TransactionRepository extends CrudRepository<Transaction, Long> { @Query(value = "SELECT " + " new com.test.technical.dto.TopMemberDTO(m.id, m.name, m.email, COUNT(t.book_

我正在使用下面的代码:

@RestResource(exported = false)
public interface TransactionRepository extends CrudRepository<Transaction, Long> {

@Query(value = "SELECT " +
        "    new com.test.technical.dto.TopMemberDTO(m.id, m.name, m.email, COUNT(t.book_id)) " +
        "FROM " +
        "    member m JOIN transaction t where m.id = t.member_id and t.date_of_issue >= :dateOfIssue and t.date_of_return <= :dateOfReturn " +
        "GROUP BY t.member_id ORDER BY COUNT(t.book_id) DESC limit 5", nativeQuery = true)


List<TopMemberDTO> getTopMembers(@Param("dateOfIssue") LocalDateTime dateOfIssue, @Param("dateOfReturn") LocalDateTime dateOfReturn); 
错误是:


您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以了解使用near'.test.technical.dto.TopMemberDTOm.id、m.name、m.email、COUNTt.book_id F'的正确语法。如果您使用的是jpql,并且您说它是nativeQuery=true,则需要更改它。 这种查询我是这样使用的

@Entity
@Table(name = "TABLE")
@NamedQueries({
    @NamedQuery(name = "ANYIDENTIFIER", query = "select new example.DTO(rp.example) from 
RemesaProceso rp where rp.vigente = true and rp.proceso.idProceso = :idProceso order by rp.remesaId asc")
})
在另一个类中,我返回一个DTO列表

return entityManager.createNamedQuery("ANYIDENTIFIER").setParameter("idProceso ", 2).getSingleResult();

是MySQL还是MS SQL?@Alex:是MySQL,我从没见过SELECT new。。。。在MySQL中,你能给我任何指向它意味着什么的链接吗?当我们希望DB的结果自动映射到我们的类[TopMemberDTO]时,我们就使用它。这是Java代码吗?图书馆?贴上标签!