[
https://issues.jboss.org/browse/WFLY-11991?page=com.atlassian.jira.plugin...
]
Scott Marlow updated WFLY-11991:
--------------------------------
Description:
The idea is to transform any class method parameter of type
org.hibernate.engine.spi.SessionImplementor, in user application, to instead use type
org.hibernate.engine.spi.SharedSessionContractImplementor.
The above is done for any application class that has any of the following Hibernate
classes as its super class:
{code}
org.hibernate.usertype.UserType
org.hibernate.usertype.CompositeUserType
org.hibernate.usertype.UserCollectionType
org.hibernate.usertype.UserVersionType
org.hibernate.type.Type
org.hibernate.type.SingleColumnType
org.hibernate.type.AbstractStandardBasicType
org.hibernate.type.ProcedureParameterExtractionAware
org.hibernate.type.ProcedureParameterNamedBinder
org.hibernate.type.VersionType
org.hibernate.collection.spi.PersistentCollection
{code}
The code change is required to handle application classes like:
[
https://github.com/simkam/wildfly/compare/hibernate_transformer].
The test case change is adding an internalNullSafeGet method that should also be
transformed to use the SharedSessionContractImplementor type but was not, which led to an
application failure with code:
{code}
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session,
Object owner) throws HibernateException, SQLException {
return internalNullSafeGet(rs, names, session, owner);
}
private Object internalNullSafeGet(ResultSet rs, String[] names, SessionImplementor
session, Object owner) throws HibernateException, SQLException {
internalSessionImplementorUsingMethod(session);
session.isTransactionInProgress();
int result = rs.getInt( names[0] );
if ( rs.wasNull() ) return null;
return State.values()[result];
}
}
{code}
was:
The idea is to transform any class method parameter of type
org.hibernate.engine.spi.SessionImplementor, in user application, to instead use type
org.hibernate.engine.spi.SharedSessionContractImplementor.
The above is done for any application class that has any of the following Hibernate
classes as its super class:
{code}
org.hibernate.usertype.UserType
org.hibernate.usertype.CompositeUserType
org.hibernate.usertype.UserCollectionType
org.hibernate.usertype.UserVersionType
org.hibernate.type.Type
org.hibernate.type.SingleColumnType
org.hibernate.type.AbstractStandardBasicType
org.hibernate.type.ProcedureParameterExtractionAware
org.hibernate.type.ProcedureParameterNamedBinder
org.hibernate.type.VersionType
org.hibernate.collection.spi.PersistentCollection
{code}
The test case (change) is for this enhancement is
[
https://github.com/simkam/wildfly/compare/hibernate_transformer].
The test case change is adding an internalNullSafeGet method that should also be
transformed to use the SharedSessionContractImplementor type but was not, which led to an
application failure with code:
{code}
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session,
Object owner) throws HibernateException, SQLException {
return internalNullSafeGet(rs, names, session, owner);
}
private Object internalNullSafeGet(ResultSet rs, String[] names, SessionImplementor
session, Object owner) throws HibernateException, SQLException {
internalSessionImplementorUsingMethod(session);
session.isTransactionInProgress();
int result = rs.getInt( names[0] );
if ( rs.wasNull() ) return null;
return State.values()[result];
}
}
{code}
Applications that extend certain Hibernate classes should be updated
to use type SharedSessionContractImplementor instead of SessionImplementor
-----------------------------------------------------------------------------------------------------------------------------------------------
Key: WFLY-11991
URL:
https://issues.jboss.org/browse/WFLY-11991
Project: WildFly
Issue Type: Bug
Components: JPA / Hibernate
Reporter: Scott Marlow
Assignee: Scott Marlow
Priority: Major
Fix For: 17.0.0.Final
Attachments: afterchange.zip, beforechange.zip
The idea is to transform any class method parameter of type
org.hibernate.engine.spi.SessionImplementor, in user application, to instead use type
org.hibernate.engine.spi.SharedSessionContractImplementor.
The above is done for any application class that has any of the following Hibernate
classes as its super class:
{code}
org.hibernate.usertype.UserType
org.hibernate.usertype.CompositeUserType
org.hibernate.usertype.UserCollectionType
org.hibernate.usertype.UserVersionType
org.hibernate.type.Type
org.hibernate.type.SingleColumnType
org.hibernate.type.AbstractStandardBasicType
org.hibernate.type.ProcedureParameterExtractionAware
org.hibernate.type.ProcedureParameterNamedBinder
org.hibernate.type.VersionType
org.hibernate.collection.spi.PersistentCollection
{code}
The code change is required to handle application classes like:
[
https://github.com/simkam/wildfly/compare/hibernate_transformer].
The test case change is adding an internalNullSafeGet method that should also be
transformed to use the SharedSessionContractImplementor type but was not, which led to an
application failure with code:
{code}
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session,
Object owner) throws HibernateException, SQLException {
return internalNullSafeGet(rs, names, session, owner);
}
private Object internalNullSafeGet(ResultSet rs, String[] names, SessionImplementor
session, Object owner) throws HibernateException, SQLException {
internalSessionImplementorUsingMethod(session);
session.isTransactionInProgress();
int result = rs.getInt( names[0] );
if ( rs.wasNull() ) return null;
return State.values()[result];
}
}
{code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)