IllegalArgumentException:请求的结果类型不匹配 - 但类型已设置
我收到以下错误:
IllegalArgumentException: Mismatch in requested result type [com.taqwaapps.entity.Event] and actual result type [com.taqwaapps.dto.EventDTO]
但我的代码指向我打算接收的类型:
@Repository
public class EventRepositoryImpl {
@PersistenceContext
private EntityManager entityManager;
public List<EventDTO> getLatestEventsFiltered(String sql, int limit) {
Query query = entityManager.createQuery(sql, Event.class);
query.setMaxResults(limit);
List<EventDTO> resultList = (List<EventDTO>) query.getResultList();
return resultList;
}
}
信息:对象 Event
和 EventDTO
不同。
有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Query query =EntityManager.createQuery(sql, Event.class);
<---- 这里你通知库它必须使用Event.class
解析结果但是这里
List resultList = (List) query.getResultList();
您尝试使用EventDTO.class
解析结果将其更改为
列表<事件> resultList = query.getResultList();
然后使用一些转换器将
List
转换为List
Query query = entityManager.createQuery(sql, Event.class);
<---- Here you inform the library that it must parse the result usingEvent.class
But here
List<EventDTO> resultList = (List<EventDTO>) query.getResultList();
you try to parse the result usingEventDTO.class
Change it into
List<Event> resultList = query.getResultList();
and then use some converter to convert the
List<Event>
into aList<EventDTO>
在修复代码之前,您必须清楚 java.lang.IllegalArgumentException 的原因。 Refer
java.lang.IllegalArgumentException 的原因
一旦您清楚了问题,请参考 @Panagiotis Bougioukas 已经提供的解决方案
问题 - 参数格式无效
最有可能的是下面的解决方案应该有效(未经测试)
Before fixing your code you must be clear about the reasons for java.lang.IllegalArgumentException. Refer
Reasons for java.lang.IllegalArgumentException
Once you are clear about the issues, please refer to the solution which was already provided by @Panagiotis Bougioukas
Issue - Argument format is invalid
Most probably below solution should work(Not tested)