我已从 Spring Boot
2.7
迁移到 3.2.2
,并在 2.7 中工作的存储库之一上使用以下方法。
@Query(
"""
SELECT new com.domain.services.resources.repository.AllocationChainResult(\
aca.allocationChain.id, aca.allocationChain.name, aca.referencedEntityId, aca.referencedEntityType, \
aca.referencedRestrictionEntityId, aca.referencedRestrictionEntityType, aca.timeModel.id) \
FROM AllocationChainAssignment AS aca \
WHERE aca.referencedEntityId IN :refEntityIds \
AND aca.deleted = 'active' \
AND ((aca.timeModel = null) \
OR (EXISTS \
(SELECT tma.timeModelId FROM TimeModelAvailability AS tma \
WHERE tma.timeModelId = aca.timeModel.id \
AND tma.timeFrom <= :timestamp \
AND tma.timeTo > :timestamp)))\
"""
)
List<AllocationChainResult> findUsingReferencedEntityIds(
@Param("refEntityIds") Set<String> entityIds,
@Param("timestamp") Long timestamp
);
老实说,我不知道要更改/修复什么,因为该错误消息不是很有帮助。
Caused by: java.lang.IllegalStateException: Unsupported tuple comparison combination. LHS is neither a tuple nor a tuple subquery but RHS is a tuple: org.hibernate.sql.ast.tree.predicate.ComparisonPredicate@76dba376
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitRelationalPredicate(AbstractSqlAstTranslator.java:7750)
at org.hibernate.sql.ast.tree.predicate.ComparisonPredicate.accept(ComparisonPredicate.java:60)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitGroupedPredicate(AbstractSqlAstTranslator.java:6952)
at org.hibernate.sql.ast.tree.predicate.GroupedPredicate.accept(GroupedPredicate.java:33)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitJunctionPredicate(AbstractSqlAstTranslator.java:7348)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitJunction(AbstractSqlAstTranslator.java:7326)
at org.hibernate.sql.ast.tree.predicate.Junction.accept(Junction.java:76)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitGroupedPredicate(AbstractSqlAstTranslator.java:6952)
at org.hibernate.sql.ast.tree.predicate.GroupedPredicate.accept(GroupedPredicate.java:33)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitJunctionPredicate(AbstractSqlAstTranslator.java:7348)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitJunction(AbstractSqlAstTranslator.java:7329)
at org.hibernate.sql.ast.tree.predicate.Junction.accept(Junction.java:76)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitWhereClause(AbstractSqlAstTranslator.java:3236)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitQuerySpec(AbstractSqlAstTranslator.java:3182)
at org.hibernate.sql.ast.tree.select.QuerySpec.accept(QuerySpec.java:119)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitSelectStatement(AbstractSqlAstTranslator.java:998)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translateSelect(AbstractSqlAstTranslator.java:861)
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translate(AbstractSqlAstTranslator.java:811)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:430)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:324)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:300)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:509)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
at org.hibernate.query.Query.getResultList(Query.java:120)
at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:129)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:149)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:137)
有人知道错误是什么吗?
我也遇到了同样的错误,发现它是由
= null
引起的。
将其替换为 is null
解决了我的问题。