java - 存储库接口(interface)中的 MySQLSyntaxErrorException

标签 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_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 服务器版本相对应的手册,了解在 '.test.technical.dto.TopMemberDTO(m.id, m.name, m.email, COUNT(t.book_id)) F' 行附近使用的正确语法1

最佳答案

您正在使用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();

关于java - 存储库接口(interface)中的 MySQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914433/

相关文章:

mysql - Spring - 如何在所有 URL 中显示子菜单

java - JXTable如何让空行可编辑

java - 创建并使用 loadUserByEmail 而不是 loadUserByUsername

spring - 将 Null 传递给 Spring Security UserDetailsS​​ervice

java - 我们如何在 Spring Boot 中连接 MySql 数据库?

java - 我可以在使用保存点时将自动提交设置为ON吗

java - 当为任何参数定义模拟构造函数时,PowerMockito 返回 null

< created_at 而不是 in 的 mysql 索引

java - 数组的 jOOQ 查询的奇怪翻译包含函数

Java AffineTransformOp内存问题