# Issue query typing with boolean

**URL:** <https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240>\
**Category:** Hibernate ORM\
**Created:** [September 13, 2023, 9:13am UTC](https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240 "2023-09-13T09:13:41Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gaetan\_N](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/gaetan_n/32/2143_2.png) [@Gaetan\_N](https://discourse.hibernate.org/u/Gaetan_N)\
**Post date:** [September 13, 2023, 9:13am UTC](https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240/1 "2023-09-13T09:13:41Z")

</div>

I am using Spring boot 3.1.3 with Hibernate 6.2.8.Final now which i migrated from Spring book 3.0.7 and hibernate 6.1.7.Final

I have the following class

```auto
@Entity
@Table(name = "product")
public class Product {
.....
@Column
protected Boolean deleted;
....
}

```

with the following spring JPA repository query :

```auto
 public interface ProductDao extends CrudRepository<Long,Product > {
 	@Query("select m.version from Product m where m.entityId = :entityId and m.endDatetime = null and m.deleted <> 1")
 	Long findVersionByEntityIdAndEndDatetimeIsNull(@Param("entityId") Long entityId);
 }

```

When i start the app i get the following error

> Caused by: org.hibernate.query.sqm.InterpretationException: Error interpreting query [select m.version from Product m where m.entityId = :entityId and m.endDatetime = null and m.deleted \<\> 1]; this may indicate a semantic (user query) problem or a bug in the parser [select m.version from Product m where m.entityId = :entityId and m.endDatetime = null and m.deleted \<\> 1]  
> at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:97) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.createHqlInterpretation(QueryInterpretationCacheStandardImpl.java:165) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:147) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.internal.AbstractSharedSessionContract.interpretHql(AbstractSharedSessionContract.java:741) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:786) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> … 161 common frames omitted

> Caused by: java.lang.IllegalArgumentException: Can’t compare test expression of type [BasicSqmPathSource(deleted : Boolean)] with element of type [basicType@6(java.lang.Integer,4)]  
> at org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.assertComparable(SqmCriteriaNodeBuilder.java:2102) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitComparisonPredicate(SemanticQueryBuilder.java:2493) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitComparisonPredicate(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.grammars.hql.HqlParser$ComparisonPredicateContext.accept(HqlParser.java:6111) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitAndPredicate(SemanticQueryBuilder.java:2314) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitAndPredicate(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.grammars.hql.HqlParser$AndPredicateContext.accept(HqlParser.java:6013) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitWhereClause(SemanticQueryBuilder.java:2297) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitWhereClause(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.grammars.hql.HqlParser$WhereClauseContext.accept(HqlParser.java:5910) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuery(SemanticQueryBuilder.java:1161) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:937) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.grammars.hql.HqlParser$QuerySpecExpressionContext.accept(HqlParser.java:1818) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:931) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.grammars.hql.HqlParser$SimpleQueryGroupContext.accept(HqlParser.java:1711) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectStatement(SemanticQueryBuilder.java:418) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitStatement(SemanticQueryBuilder.java:377) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.SemanticQueryBuilder.buildSemanticModel(SemanticQueryBuilder.java:295) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:81) ~[hibernate-core-6.2.8.Final.jar:6.2.8.Final]  
> … 165 common frames omitted

---

<div class="post-metadata">

**Author:** ![mbladel](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/mbladel/32/2128_2.png) [@mbladel](https://discourse.hibernate.org/u/mbladel)\
**Post date:** [September 13, 2023, 9:36am UTC](https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240/2 "2023-09-13T09:36:08Z")

</div>

Boolean path comparison with integer literals is something that used to work but wasn’t officially documented, and in Hibernate 6.2 it’s not allowed anymore. The same problem was reported in this issue: [[HHH-16605] - Hibernate JIRA](https://hibernate.atlassian.net/browse/HHH-16605), and there is an open proposal to allow comparing differently typed paths that are “compatible” here: [[HHH-16769] - Hibernate JIRA](https://hibernate.atlassian.net/browse/HHH-16769).

The quick fix would be using a boolean literal in you query, that will pass the comparable type check, so e.g. `... and m.deleted <> true`.

You can vote for the proposal Jira to increase its visibility, and remember to watch the issue for any updates. Feel free to participate in the discussion, any contributions or ideas are very much appreciated

---

<div class="post-metadata">

**Author:** ![Gaetan\_N](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/gaetan_n/32/2143_2.png) [@Gaetan\_N](https://discourse.hibernate.org/u/Gaetan_N)\
**Post date:** [September 13, 2023, 9:42am UTC](https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240/3 "2023-09-13T09:42:05Z")

</div>

Is there any workaround ? i am happy to change the query if needs to be

---

<div class="post-metadata">

**Author:** ![mbladel](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/mbladel/32/2128_2.png) [@mbladel](https://discourse.hibernate.org/u/mbladel)\
**Post date:** [September 13, 2023, 9:43am UTC](https://discourse.hibernate.org/t/issue-query-typing-with-boolean/8240/4 "2023-09-13T09:43:32Z")

</div>

I’ve just edited my previous comment with the correct query syntax you can use 🙂
