java - Spring Data JPA - 两个 IN 子句和一个 OR - QuerySyntaxException

标签 java spring hibernate spring-data spring-data-jpa

我的Spring数据查询是:

@Query("FROM NewsFeed nf where dealRoom.id =:dealRoomId and (fileFolder IN :folders or file in :files)")
Page<NewsFeed> findByFolder(@Param("dealRoomId") final String dealRoomId, @Param("files") final List<File> files, @Param("folders") final List<FileFolder> folders, final Pageable pageable);

但我认为:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: {vector} [select count(nf) FROM NewsFeed nf where dealRoom.id =:dealRoomId and (fileFolder IN (:folders_0_, :folders_1_, :folders_2_, :folders_3_, :folders_4_, :folders_5_, :folders_6_, :folders_7_, :folders_8_, :folders_9_) or file in :files_0_, :files_1_, :files_2_, :files_3_, :files_4_, :files_5_, :files_6_, :files_7_, :files_8_, :files_9_, :files_10_, :files_11_)]

有谁知道我为什么采取 QuerySyntaxException 吗?

最佳答案

问题出在第二个IN子句上,它生成了错误的sql(值没有用括号括起来):

file in :files_0_, :files_1_, :files_2_

这是 hibernate 中公认的错误,似乎已在 5.0.7 中修复 HHH-9630

关于java - Spring Data JPA - 两个 IN 子句和一个 OR - QuerySyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247285/

相关文章:

java - org.hibernate.MappingException : entity class not found: dto. CityDTO

java - 在单独的 war 文件中的 portlet 之间共享 bean

java - 在 Spring boot 中分析特定的自定义属性文件

java - Hibernate Session.multiLoad L2 缓存问题

java - 构造具有许多私有(private)集合字段的对象

java - 如何调用重写的抽象类方法

java - 获取 Hibernate 序列 nextVal (Oracle) 时发生异常

hibernate - Grails,GORM,更新方法在调用save()之前保留对象

java - Source.fromResource() 在本地工作,但在服务器上抛出 java.nio.charset.MalformedInputException

java - 有没有办法查看在 ActionListener 中修改了 2 个 JComboBox 中的哪一个?