Hernan (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=62fba63...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZmZkMWJlYzcw...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-15452?atlOrigin=eyJpIjoiZmZkMW...
) HHH-15452 (
https://hibernate.atlassian.net/browse/HHH-15452?atlOrigin=eyJpIjoiZmZkMW...
) Predicate add expresion results in UnsupportedOperationException (
https://hibernate.atlassian.net/browse/HHH-15452?atlOrigin=eyJpIjoiZmZkMW...
)
Issue Type: Bug Affects Versions: 6.1.1 Assignee: Unassigned Components: hibernate-core
Created: 16/Aug/2022 07:55 AM Environment: Hibernate ORM core version 6.1.1.Final, openjdk
version "11" 2018-09-25, Ubuntu 20.04.4 LTS, SQL Server 2008 R2 (SP3) Priority:
Major Reporter: Hernan (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=62fba63...
)
While upgrating Hibernate version from 4.3.7 to 6.1.1 I'm getting an Exception running
a piece of code that used to work and is found in several tutorials and examples
The simplest code I can build to show the behavior is:
CriteriaBuilder builder = em4.getCriteriaBuilder();
CriteriaQuery<Persona> cq = builder.createQuery(Persona.class);
Root<Persona> rootClaseGrid = cq.from(Persona.class);
cq.select(rootClaseGrid);
Predicate conjuncion = builder.conjunction();
Predicate expr = builder.equal(rootClaseGrid.get( "documento" ),
"AAAA" );
conjuncion.getExpressions().add(expr);
Last line throws:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
at pruebas.PruebaHM.main(PruebaHM.java:181)
Debugging Hibernate code shows that method "getExpressions" resolves in class
"org.hibernate.query.sqm.tree.predicate.AbstractSqmPredicate", with code:
@Override
public List<Expression< Boolean >> getExpressions() {
/// most predicates do not have sub-predicates
return Collections.emptyList();
}
in fact returning always an emptyList of java.util.AbstractList, trying to add elements
always throws UnsupportedOperationException:
public void add( int index, E element) {
throw new UnsupportedOperationException();
}
Older versions (for instance 4.3.7) manage a list of Expression<Boolean>, the last
line in the code above resolves in class
"org.hibernate.jpa.criteria.predicate.CompoundPredicate" :
@Override
public List<Expression< Boolean >> getExpressions() {
return expressions;
}
Thanks in advance
(
https://hibernate.atlassian.net/browse/HHH-15452#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-15452#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100204- sha1:f005d5a )