[jboss-jira] [JBoss JIRA] (WFLY-10520) Add Hibernate ORM 5.3 compatibility transformer
Gail Badner (JIRA)
issues at jboss.org
Tue Jun 26 17:18:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13597335#comment-13597335 ]
Gail Badner commented on WFLY-10520:
------------------------------------
[~smarlow], regarding {{setFirstResult( -1 )}}, I'd like to clarify what I've done and why.
If (untransformed) {{org.hibernate.Query#setFirstResult( int )}} is called with a negative argument...
In 5.1,
* {{org.hibernate.Query#getFirstResult( )}} will return the same negative value;
* when the query is executed, the first result retrieved will be at position 0 of the query results.
In 5.3,
* {{IllegalArgumentException}} is thrown as specified by JPA.
I could not restore both 5.1 behaviors in 5.3 (at least not without an overly complicated fix). I was able to restore the more important behavior (IMO) by calling {{setHibernateFirstResult( 0 )}}. By doing that, when the query is executed, the first result retrieved will be at position 0 of the query results.
I did this because I didn't think it should be necessary for an application to be modified because it calls {{org.hibernate.Query#setFirstResult( int )}} with a negative argument, when it is easy for the transformer to do the right thing with respect to pagination.
After transforming, pagination will work the same as in 5.1, but {{org.hibernate.Query#getFirstResult()}} will return 0, instead of the negative value the application used when it called {{org.hibernate.Query#setFirstResult( int )}}.
I think it is unlikely that an application would even call {{org.hibernate.Query#getFirstResult()}}, but if it does, it will get an unexpected result, (0).
IMO, this can be handled by documenting this point {org.hibernate.Query#setHibernateFirstResult}} in the migration guide, as well as in the transformer documentation. It is already documented in the Javadoc. I suppose that Hibernate could also log an INFO or WARNING message when {{setHibernateFirstResult}} is called with a negative value.
> Add Hibernate ORM 5.3 compatibility transformer
> -----------------------------------------------
>
> Key: WFLY-10520
> URL: https://issues.jboss.org/browse/WFLY-10520
> Project: WildFly
> Issue Type: Task
> Components: JPA / Hibernate
> Reporter: Gail Badner
> Assignee: Scott Marlow
> Fix For: 14.0.0.CR1
>
>
> A compatibility transformer needs to be added to address Hibernate ORM 5.3 API methods that are no longer compatible with 5.1.
> From https://docs.google.com/document/d/1cAVBdeQXQfpTwH0f_GKSahh_gRd7bKI6kII-wxoMglU
> # Change call to org.hibernate.BasicQueryContract.getFlushMode() to instead call BasicQueryContract.getHibernateFlushMode().
> # Change call to org.hibernate.Session.getFlushMode, to instead call Session.getHibernateFlushMode()
> # Modify calls to org.hibernate.Query.getFirstResult() to convert returned int, to Integer result.
> # Modify calls to org.hibernate.Query.getMaxResults() to convert returned int, to Integer result, if returned int value is <= 0, null should be used, if Integer.MAX_VALUE is, the transformer should replace with null reference.
> # App References to Enum org.hibernate.FlushMode.NEVER (0) should be transformed to reference FlushMode.MANUAL (0) instead.
> # For call to org.hibernate.Query.setMaxResults(int), instead call org.hibernate.Query.setHibernateMaxResults(int) which will be added soon to ORM 5.3.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list