diff --git a/checkerstubs/jakarta.persistence.astub b/checkerstubs/jakarta.persistence.astub index 55415ca015..ed7ee2d9ba 100644 --- a/checkerstubs/jakarta.persistence.astub +++ b/checkerstubs/jakarta.persistence.astub @@ -17,6 +17,9 @@ public interface EntityManager extends AutoCloseable { public interface EntityManagerFactory extends AutoCloseable { public @Nullable Cache getCache(); } +public interface EntityTransaction { + @Nullable Integer getTimeout(); +} public interface Parameter { public @Nullable String getName(); public @Nullable Integer getPosition(); diff --git a/hibernate-core/src/main/java/org/hibernate/Hibernate.java b/hibernate-core/src/main/java/org/hibernate/Hibernate.java index 4ff0bf19b0..3da9438a83 100644 --- a/hibernate-core/src/main/java/org/hibernate/Hibernate.java +++ b/hibernate-core/src/main/java/org/hibernate/Hibernate.java @@ -349,6 +349,31 @@ public final class Hibernate { return true; } + /** + * Initializes the property with the given name of the given entity instance. + *

+ * This operation is equivalent to {@link jakarta.persistence.PersistenceUnitUtil#load(Object, String)}. + * + * @param proxy The entity instance or proxy + * @param attributeName the name of a persistent attribute of the object + */ + public static void initializeProperty(Object proxy, String attributeName) { + final Object entity; + final LazyInitializer lazyInitializer = extractLazyInitializer( proxy ); + if ( lazyInitializer != null ) { + entity = lazyInitializer.getImplementation(); + } + else { + entity = proxy; + } + + if ( isPersistentAttributeInterceptable( entity ) ) { + PersistentAttributeInterceptor interceptor = + asPersistentAttributeInterceptable( entity ).$$_hibernate_getInterceptor(); + interceptor.readObject( entity, attributeName, null ); + } + } + /** * If the given object is not a proxy, return it. But, if it is a proxy, ensure * that the proxy is initialized, and return a direct reference to its proxied diff --git a/hibernate-core/src/main/java/org/hibernate/Session.java b/hibernate-core/src/main/java/org/hibernate/Session.java index 0a58dc0e16..c41597226b 100644 --- a/hibernate-core/src/main/java/org/hibernate/Session.java +++ b/hibernate-core/src/main/java/org/hibernate/Session.java @@ -23,6 +23,7 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.FlushModeType; import jakarta.persistence.LockModeType; import jakarta.persistence.PessimisticLockScope; +import jakarta.persistence.TypedQueryReference; import jakarta.persistence.criteria.CriteriaDelete; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.CriteriaUpdate; @@ -1574,6 +1575,9 @@ public interface Session extends SharedSessionContract, EntityManager { @Override Query createQuery(String queryString, Class resultClass); + @Override + Query createQuery(TypedQueryReference typedQueryReference); + @Override @Deprecated @SuppressWarnings("rawtypes") Query createQuery(String queryString); diff --git a/hibernate-core/src/main/java/org/hibernate/Transaction.java b/hibernate-core/src/main/java/org/hibernate/Transaction.java index 01f6465961..cf7416e118 100644 --- a/hibernate-core/src/main/java/org/hibernate/Transaction.java +++ b/hibernate-core/src/main/java/org/hibernate/Transaction.java @@ -8,6 +8,7 @@ package org.hibernate; import jakarta.persistence.EntityTransaction; import jakarta.transaction.Synchronization; +import org.checkerframework.checker.nullness.qual.Nullable; import org.hibernate.resource.transaction.spi.TransactionStatus; @@ -66,7 +67,7 @@ public interface Transaction extends EntityTransaction { * * @return The timeout, in seconds. */ - int getTimeout(); + @Nullable Integer getTimeout(); /** * Attempt to mark the underlying transaction for rollback only. diff --git a/hibernate-core/src/main/java/org/hibernate/annotations/NamedQuery.java b/hibernate-core/src/main/java/org/hibernate/annotations/NamedQuery.java index e97d4141c8..c524746715 100644 --- a/hibernate-core/src/main/java/org/hibernate/annotations/NamedQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/annotations/NamedQuery.java @@ -12,6 +12,8 @@ import java.lang.annotation.Target; import jakarta.persistence.CacheRetrieveMode; import jakarta.persistence.CacheStoreMode; +import jakarta.persistence.EntityManager; + import org.hibernate.Remove; import static java.lang.annotation.ElementType.PACKAGE; @@ -47,6 +49,15 @@ public @interface NamedQuery { */ String query(); + /** + * Optional query result class that is used by default when creating the query. + * May be overridden by explicitly passing a class object to + * {@link EntityManager#createNamedQuery(String, Class)}. + * + * @see jakarta.persistence.NamedQuery#resultClass() + */ + Class resultClass() default void.class; + /** * The flush mode for this query. * diff --git a/hibernate-core/src/main/java/org/hibernate/boot/Metadata.java b/hibernate-core/src/main/java/org/hibernate/boot/Metadata.java index 075833d3a5..9fe3106c5a 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/Metadata.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/Metadata.java @@ -115,24 +115,24 @@ public interface Metadata extends Mapping { * * @return The named query metadata, or {@code null}. */ - NamedHqlQueryDefinition getNamedHqlQueryMapping(String name); + NamedHqlQueryDefinition getNamedHqlQueryMapping(String name); /** * Visit all named HQL query definitions */ - void visitNamedHqlQueryDefinitions(Consumer definitionConsumer); + void visitNamedHqlQueryDefinitions(Consumer> definitionConsumer); /** * Retrieve named SQL query metadata. * * @return The named query metadata, or {@code null} */ - NamedNativeQueryDefinition getNamedNativeQueryMapping(String name); + NamedNativeQueryDefinition getNamedNativeQueryMapping(String name); /** * Visit all named native query definitions */ - void visitNamedNativeQueryDefinitions(Consumer definitionConsumer); + void visitNamedNativeQueryDefinitions(Consumer> definitionConsumer); /** * Retrieve named procedure metadata. diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java index e07490da4e..8d36a0b1d1 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java @@ -164,8 +164,8 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, private Database database; - private final Map namedQueryMap = new HashMap<>(); - private final Map namedNativeQueryMap = new HashMap<>(); + private final Map> namedQueryMap = new HashMap<>(); + private final Map> namedNativeQueryMap = new HashMap<>(); private final Map namedProcedureCallMap = new HashMap<>(); private final Map sqlResultSetMappingMap = new HashMap<>(); @@ -763,7 +763,7 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Named query handling - public NamedHqlQueryDefinition getNamedHqlQueryMapping(String name) { + public NamedHqlQueryDefinition getNamedHqlQueryMapping(String name) { if ( name == null ) { throw new IllegalArgumentException( "null is not a valid query name" ); } @@ -771,12 +771,12 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, } @Override - public void visitNamedHqlQueryDefinitions(Consumer definitionConsumer) { + public void visitNamedHqlQueryDefinitions(Consumer> definitionConsumer) { namedQueryMap.values().forEach( definitionConsumer ); } @Override - public void addNamedQuery(NamedHqlQueryDefinition def) { + public void addNamedQuery(NamedHqlQueryDefinition def) { if ( def == null ) { throw new IllegalArgumentException( "Named query definition is null" ); } @@ -791,7 +791,7 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, applyNamedQuery( def.getRegistrationName(), def ); } - private void applyNamedQuery(String name, NamedHqlQueryDefinition query) { + private void applyNamedQuery(String name, NamedHqlQueryDefinition query) { checkQueryName( name ); namedQueryMap.put( name.intern(), query ); } @@ -803,7 +803,7 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, } @Override - public void addDefaultQuery(NamedHqlQueryDefinition queryDefinition) { + public void addDefaultQuery(NamedHqlQueryDefinition queryDefinition) { applyNamedQuery( queryDefinition.getRegistrationName(), queryDefinition ); defaultNamedQueryNames.add( queryDefinition.getRegistrationName() ); } @@ -812,17 +812,17 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, // Named native-query handling @Override - public NamedNativeQueryDefinition getNamedNativeQueryMapping(String name) { + public NamedNativeQueryDefinition getNamedNativeQueryMapping(String name) { return namedNativeQueryMap.get( name ); } @Override - public void visitNamedNativeQueryDefinitions(Consumer definitionConsumer) { + public void visitNamedNativeQueryDefinitions(Consumer> definitionConsumer) { namedNativeQueryMap.values().forEach( definitionConsumer ); } @Override - public void addNamedNativeQuery(NamedNativeQueryDefinition def) { + public void addNamedNativeQuery(NamedNativeQueryDefinition def) { if ( def == null ) { throw new IllegalArgumentException( "Named native query definition object is null" ); } @@ -837,13 +837,13 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector, applyNamedNativeQuery( def.getRegistrationName(), def ); } - private void applyNamedNativeQuery(String name, NamedNativeQueryDefinition query) { + private void applyNamedNativeQuery(String name, NamedNativeQueryDefinition query) { checkQueryName( name ); namedNativeQueryMap.put( name.intern(), query ); } @Override - public void addDefaultNamedNativeQuery(NamedNativeQueryDefinition query) { + public void addDefaultNamedNativeQuery(NamedNativeQueryDefinition query) { applyNamedNativeQuery( query.getRegistrationName(), query ); defaultNamedNativeQueryNames.add( query.getRegistrationName() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java index 55a03c545a..5bf15028ea 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java @@ -101,8 +101,8 @@ public class MetadataImpl implements MetadataImplementor, Serializable { private final Map fetchProfileMap; private final Map imports; private final Map idGeneratorDefinitionMap; - private final Map namedQueryMap; - private final Map namedNativeQueryMap; + private final Map> namedQueryMap; + private final Map> namedNativeQueryMap; private final Map namedProcedureCallMap; private final Map sqlResultSetMappingMap; private final Map namedEntityGraphMap; @@ -123,8 +123,8 @@ public class MetadataImpl implements MetadataImplementor, Serializable { Map fetchProfileMap, Map imports, Map idGeneratorDefinitionMap, - Map namedQueryMap, - Map namedNativeQueryMap, + Map> namedQueryMap, + Map> namedNativeQueryMap, Map namedProcedureCallMap, Map sqlResultSetMappingMap, Map namedEntityGraphMap, @@ -246,22 +246,22 @@ public class MetadataImpl implements MetadataImplementor, Serializable { } @Override - public NamedHqlQueryDefinition getNamedHqlQueryMapping(String name) { + public NamedHqlQueryDefinition getNamedHqlQueryMapping(String name) { return namedQueryMap.get( name ); } @Override - public void visitNamedHqlQueryDefinitions(Consumer definitionConsumer) { + public void visitNamedHqlQueryDefinitions(Consumer> definitionConsumer) { namedQueryMap.values().forEach( definitionConsumer ); } @Override - public NamedNativeQueryDefinition getNamedNativeQueryMapping(String name) { + public NamedNativeQueryDefinition getNamedNativeQueryMapping(String name) { return namedNativeQueryMap.get( name ); } @Override - public void visitNamedNativeQueryDefinitions(Consumer definitionConsumer) { + public void visitNamedNativeQueryDefinitions(Consumer> definitionConsumer) { namedNativeQueryMap.values().forEach( definitionConsumer ); } @@ -370,16 +370,16 @@ public class MetadataImpl implements MetadataImplementor, Serializable { ); } - private Map buildNamedSqmMementos(SessionFactoryImplementor sessionFactory) { - final HashMap map = new HashMap<>(); + private Map> buildNamedSqmMementos(SessionFactoryImplementor sessionFactory) { + final HashMap> map = new HashMap<>(); if ( namedQueryMap != null ) { namedQueryMap.forEach( (key, value) -> map.put( key, value.resolve( sessionFactory ) ) ); } return map; } - private Map buildNamedNativeMementos(SessionFactoryImplementor sessionFactory) { - final HashMap map = new HashMap<>(); + private Map> buildNamedNativeMementos(SessionFactoryImplementor sessionFactory) { + final HashMap> map = new HashMap<>(); if ( namedNativeQueryMap != null ) { namedNativeQueryMap.forEach( (key, value) -> map.put( key, value.resolve( sessionFactory ) ) ); } @@ -652,11 +652,11 @@ public class MetadataImpl implements MetadataImplementor, Serializable { return bootstrapContext; } - public Map getNamedQueryMap() { + public Map> getNamedQueryMap() { return namedQueryMap; } - public Map getNamedNativeQueryMap() { + public Map> getNamedNativeQueryMap() { return namedNativeQueryMap; } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedHqlQueryDefinitionImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedHqlQueryDefinitionImpl.java index 284a97cf96..bb56ba73df 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedHqlQueryDefinitionImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedHqlQueryDefinitionImpl.java @@ -17,10 +17,12 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.query.hql.internal.NamedHqlQueryMementoImpl; import org.hibernate.query.sqm.spi.NamedSqmQueryMemento; +import org.checkerframework.checker.nullness.qual.Nullable; + /** * @author Steve Ebersole */ -public class NamedHqlQueryDefinitionImpl extends AbstractNamedQueryDefinition implements NamedHqlQueryDefinition { +public class NamedHqlQueryDefinitionImpl extends AbstractNamedQueryDefinition implements NamedHqlQueryDefinition { private final String hqlString; private final Integer firstResult; private final Integer maxResults; @@ -28,6 +30,7 @@ public class NamedHqlQueryDefinitionImpl extends AbstractNamedQueryDefinition im public NamedHqlQueryDefinitionImpl( String name, + @Nullable Class resultType, String hqlString, Integer firstResult, Integer maxResults, @@ -44,6 +47,7 @@ public class NamedHqlQueryDefinitionImpl extends AbstractNamedQueryDefinition im Map hints) { super( name, + resultType, cacheable, cacheRegion, cacheMode, @@ -67,9 +71,10 @@ public class NamedHqlQueryDefinitionImpl extends AbstractNamedQueryDefinition im } @Override - public NamedSqmQueryMemento resolve(SessionFactoryImplementor factory) { - return new NamedHqlQueryMementoImpl( + public NamedSqmQueryMemento resolve(SessionFactoryImplementor factory) { + return new NamedHqlQueryMementoImpl<>( getRegistrationName(), + getResultType(), hqlString, firstResult, maxResults, diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedNativeQueryDefinitionImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedNativeQueryDefinitionImpl.java index 688d8dc5e1..f996c3fb18 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedNativeQueryDefinitionImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/NamedNativeQueryDefinitionImpl.java @@ -18,24 +18,25 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.query.sql.internal.NamedNativeQueryMementoImpl; import org.hibernate.query.sql.spi.NamedNativeQueryMemento; +import org.checkerframework.checker.nullness.qual.Nullable; + import static org.hibernate.internal.util.StringHelper.isNotEmpty; /** * @author Steve Ebersole */ -public class NamedNativeQueryDefinitionImpl extends AbstractNamedQueryDefinition implements NamedNativeQueryDefinition { +public class NamedNativeQueryDefinitionImpl extends AbstractNamedQueryDefinition implements NamedNativeQueryDefinition { private final String sqlString; private final String resultSetMappingName; - private final String resultSetMappingClassName; private final Set querySpaces; private final Integer firstResult; private final Integer maxResults; public NamedNativeQueryDefinitionImpl( String name, + @Nullable Class resultType, String sqlString, String resultSetMappingName, - String resultSetMappingClassName, Set querySpaces, Boolean cacheable, String cacheRegion, @@ -50,6 +51,7 @@ public class NamedNativeQueryDefinitionImpl extends AbstractNamedQueryDefinition Map hints) { super( name, + resultType, cacheable, cacheRegion, cacheMode, @@ -63,7 +65,6 @@ public class NamedNativeQueryDefinitionImpl extends AbstractNamedQueryDefinition ); this.sqlString = sqlString; this.resultSetMappingName = resultSetMappingName; - this.resultSetMappingClassName = resultSetMappingClassName; this.querySpaces = querySpaces; this.firstResult = firstResult; this.maxResults = maxResults; @@ -80,21 +81,13 @@ public class NamedNativeQueryDefinitionImpl extends AbstractNamedQueryDefinition } @Override - public String getResultSetMappingClassName() { - return resultSetMappingClassName; - } - - @Override - public NamedNativeQueryMemento resolve(SessionFactoryImplementor factory) { - return new NamedNativeQueryMementoImpl( + public NamedNativeQueryMemento resolve(SessionFactoryImplementor factory) { + return new NamedNativeQueryMementoImpl<>( getRegistrationName(), + getResultType(), sqlString, sqlString, resultSetMappingName, - isNotEmpty( resultSetMappingClassName ) - ? factory.getServiceRegistry().requireService( ClassLoaderService.class ) - .classForName( resultSetMappingClassName ) - : null, querySpaces, getCacheable(), getCacheRegion(), diff --git a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/HbmXmlTransformer.java b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/HbmXmlTransformer.java index ed14059f92..3365bb3484 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/HbmXmlTransformer.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/HbmXmlTransformer.java @@ -2192,7 +2192,7 @@ public class HbmXmlTransformer { version.setColumn( new JaxbColumnImpl() ); version.getColumn().setName( hbmVersion.getColumnAttribute() ); } - target.getAttributes().getVersion().add( version ); + target.getAttributes().setVersion( version ); } } @@ -2208,7 +2208,7 @@ public class HbmXmlTransformer { } //noinspection deprecation version.setTemporal( TemporalType.TIMESTAMP ); - target.getAttributes().getVersion().add( version ); + target.getAttributes().setVersion( version ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntity.java b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntity.java index 7eee2aa918..b69abac8a9 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntity.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntity.java @@ -11,90 +11,92 @@ import java.util.List; import org.hibernate.annotations.PolymorphismType; import org.hibernate.engine.OptimisticLockStyle; +import org.checkerframework.checker.nullness.qual.Nullable; + /** * @author Steve Ebersole */ public interface JaxbEntity extends JaxbEntityOrMappedSuperclass { - String getName(); - void setName(String name); + @Nullable String getName(); + void setName(@Nullable String name); - JaxbTableImpl getTable(); - void setTable(JaxbTableImpl value); + @Nullable JaxbTableImpl getTable(); + void setTable(@Nullable JaxbTableImpl value); - String getTableExpression(); - void setTableExpression(String value); + @Nullable String getTableExpression(); + void setTableExpression(@Nullable String value); List getSecondaryTables(); List getSynchronizeTables(); List getPrimaryKeyJoinColumns(); - JaxbForeignKeyImpl getPrimaryKeyForeignKey(); - void setPrimaryKeyForeignKey(JaxbForeignKeyImpl value); + @Nullable JaxbForeignKeyImpl getPrimaryKeyForeignKey(); + void setPrimaryKeyForeignKey(@Nullable JaxbForeignKeyImpl value); - String getRowid(); - void setRowid(String value); + @Nullable String getRowid(); + void setRowid(@Nullable String value); - String getSqlRestriction(); - void setSqlRestriction(String value); + @Nullable String getSqlRestriction(); + void setSqlRestriction(@Nullable String value); - JaxbSqlSelectImpl getSqlSelect(); - String getHqlSelect(); + @Nullable JaxbSqlSelectImpl getSqlSelect(); + @Nullable String getHqlSelect(); - JaxbCustomSqlImpl getSqlInsert(); + @Nullable JaxbCustomSqlImpl getSqlInsert(); void setSqlInsert(JaxbCustomSqlImpl value); - JaxbCustomSqlImpl getSqlUpdate(); - void setSqlUpdate(JaxbCustomSqlImpl value); + @Nullable JaxbCustomSqlImpl getSqlUpdate(); + void setSqlUpdate(@Nullable JaxbCustomSqlImpl value); - JaxbCustomSqlImpl getSqlDelete(); - void setSqlDelete(JaxbCustomSqlImpl value); + @Nullable JaxbCustomSqlImpl getSqlDelete(); + void setSqlDelete(@Nullable JaxbCustomSqlImpl value); - Boolean isDynamicInsert(); - void setDynamicInsert(Boolean value); + @Nullable Boolean isDynamicInsert(); + void setDynamicInsert(@Nullable Boolean value); - Boolean isDynamicUpdate(); - void setDynamicUpdate(Boolean value); + @Nullable Boolean isDynamicUpdate(); + void setDynamicUpdate(@Nullable Boolean value); - Boolean isSelectBeforeUpdate(); - void setSelectBeforeUpdate(Boolean value); + @Nullable Boolean isSelectBeforeUpdate(); + void setSelectBeforeUpdate(@Nullable Boolean value); - JaxbCachingImpl getCaching(); - void setCaching(JaxbCachingImpl value); + @Nullable JaxbCachingImpl getCaching(); + void setCaching(@Nullable JaxbCachingImpl value); - Integer getBatchSize(); - void setBatchSize(Integer value); + @Nullable Integer getBatchSize(); + void setBatchSize(@Nullable Integer value); - Boolean isLazy(); - void setLazy(Boolean value); + @Nullable Boolean isLazy(); + void setLazy(@Nullable Boolean value); - Boolean isMutable(); - void setMutable(Boolean value); + @Nullable Boolean isMutable(); + void setMutable(@Nullable Boolean value); - OptimisticLockStyle getOptimisticLocking(); - void setOptimisticLocking(OptimisticLockStyle value); + @Nullable OptimisticLockStyle getOptimisticLocking(); + void setOptimisticLocking(@Nullable OptimisticLockStyle value); - JaxbInheritanceImpl getInheritance(); - void setInheritance(JaxbInheritanceImpl value); + @Nullable JaxbInheritanceImpl getInheritance(); + void setInheritance(@Nullable JaxbInheritanceImpl value); - String getProxy(); - void setProxy(String value); + @Nullable String getProxy(); + void setProxy(@Nullable String value); - PolymorphismType getPolymorphism(); - void setPolymorphism(PolymorphismType value); + @Nullable PolymorphismType getPolymorphism(); + void setPolymorphism(@Nullable PolymorphismType value); - String getDiscriminatorValue(); - void setDiscriminatorValue(String value); + @Nullable String getDiscriminatorValue(); + void setDiscriminatorValue(@Nullable String value); - JaxbDiscriminatorColumnImpl getDiscriminatorColumn(); - void setDiscriminatorColumn(JaxbDiscriminatorColumnImpl value); + @Nullable JaxbDiscriminatorColumnImpl getDiscriminatorColumn(); + void setDiscriminatorColumn(@Nullable JaxbDiscriminatorColumnImpl value); - JaxbDiscriminatorFormulaImpl getDiscriminatorFormula(); - void setDiscriminatorFormula(JaxbDiscriminatorFormulaImpl value); + @Nullable JaxbDiscriminatorFormulaImpl getDiscriminatorFormula(); + void setDiscriminatorFormula(@Nullable JaxbDiscriminatorFormulaImpl value); - JaxbSequenceGeneratorImpl getSequenceGenerators(); + @Nullable JaxbSequenceGeneratorImpl getSequenceGenerators(); - JaxbTableGeneratorImpl getTableGenerators(); + @Nullable JaxbTableGeneratorImpl getTableGenerators(); List getIdentifierGenerators(); @@ -114,13 +116,13 @@ public interface JaxbEntity extends JaxbEntityOrMappedSuperclass { List getFetchProfiles(); - JaxbTenantIdImpl getTenantId(); - void setTenantId(JaxbTenantIdImpl value); + @Nullable JaxbTenantIdImpl getTenantId(); + void setTenantId(@Nullable JaxbTenantIdImpl value); - JaxbAttributesContainerImpl getAttributes(); - void setAttributes(JaxbAttributesContainerImpl value); + @Nullable JaxbAttributesContainerImpl getAttributes(); + void setAttributes(@Nullable JaxbAttributesContainerImpl value); - Boolean isCacheable(); - void setCacheable(Boolean value); + @Nullable Boolean isCacheable(); + void setCacheable(@Nullable Boolean value); } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntityOrMappedSuperclass.java b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntityOrMappedSuperclass.java index b72155acc0..cd3bf989c7 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntityOrMappedSuperclass.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntityOrMappedSuperclass.java @@ -6,25 +6,27 @@ */ package org.hibernate.boot.jaxb.mapping.spi; +import org.checkerframework.checker.nullness.qual.Nullable; + /** * JAXB binding interface for commonality between entity and mapped-superclass mappings * * @author Steve Ebersole */ public interface JaxbEntityOrMappedSuperclass extends JaxbManagedType, JaxbLifecycleCallbackContainer { - JaxbIdClassImpl getIdClass(); + @Nullable JaxbIdClassImpl getIdClass(); - void setIdClass(JaxbIdClassImpl value); + void setIdClass(@Nullable JaxbIdClassImpl value); - JaxbEmptyTypeImpl getExcludeDefaultListeners(); + @Nullable JaxbEmptyTypeImpl getExcludeDefaultListeners(); - void setExcludeDefaultListeners(JaxbEmptyTypeImpl value); + void setExcludeDefaultListeners(@Nullable JaxbEmptyTypeImpl value); - JaxbEmptyTypeImpl getExcludeSuperclassListeners(); + @Nullable JaxbEmptyTypeImpl getExcludeSuperclassListeners(); - void setExcludeSuperclassListeners(JaxbEmptyTypeImpl value); + void setExcludeSuperclassListeners(@Nullable JaxbEmptyTypeImpl value); - JaxbEntityListenerContainerImpl getEntityListenerContainer(); + @Nullable JaxbEntityListenerContainerImpl getEntityListenerContainer(); - void setEntityListenerContainer(JaxbEntityListenerContainerImpl value); + void setEntityListenerContainer(@Nullable JaxbEntityListenerContainerImpl value); } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbLifecycleCallbackContainer.java b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbLifecycleCallbackContainer.java index e72e853069..78137617f9 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbLifecycleCallbackContainer.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbLifecycleCallbackContainer.java @@ -6,6 +6,8 @@ */ package org.hibernate.boot.jaxb.mapping.spi; +import org.checkerframework.checker.nullness.qual.Nullable; + /** * JAXB binding interface for commonality between things which * allow callback declarations. This includes