java - 存储库接口中的 MySQLSyntaxErrorException
问题描述
我正在使用下面的代码:
@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();
推荐阅读
- excel - 如何使用字符串变量作为 Workbook 对象的索引?
- android - 我想更快地制作广告 html 代码
- javascript - 哪个 Javascript 事件表示 Angular SPA 已完成页面加载?
- react-native - 具有 100,000 个用户的天气应用程序的 API 调用限制
- cassandra - Cassandra Windows 10 访问冲突
- javascript - 将参数传递给 [Javascript] 函数
- python - 如何绘制极性微分方程的相平面
- multithreading - 为什么没有为包含 Arc 的结构实现 Send?
- android - 如何使用 Hilt 注入应用程序:ViewModel 中的上下文?
- ajaxcontroltoolkit - ModalPopupExtender 在某些计算机上不显示