问题描述
最近在学习使用Spring Data JPA,但是当使用简单的查询时却出现了问题。
代码如下:
@Test
public void testFindById(){
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(3);
list.add(4);
list.add(5);
List<Article> articles = articleDao.findAllById(list);
for (Article article : articles) {
System.out.println(article);
}
}
出现错误:java.lang.UnsupportedOperationException: Recommended SqlTypeDescriptor not known for this Java type : java.lang.Iterable
问题分析
在确定自己的代码没有错误后,认为可能是依赖的版本问题。
解决方法
我原来引入的是最新版本的hibernate-entitymanager,需要更换版本。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>6.0.0.Alpha7</version>
<type>pom</type>
</dependency>
https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager
我更换为5.6版本后问题得到解决。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.0.Final</version>
<type>pom</type>
</dependency>
可以成功使用findAllById()方法。
总结
盲目追新有风险,使用需谨慎!