@@ -323,18 +323,25 @@ private static SoftDelete extractSoftDelete(ClassDetails classDetails, MetadataB
323323 if ( fromClass != null ) {
324324 return fromClass ;
325325 }
326+ SoftDelete fromSuper = extractAnnotationFromMappedSuperclass ( classDetails , SoftDelete .class , sourceModelContext );
327+ if ( fromSuper != null ) {
328+ return fromSuper ;
329+ }
330+ return extractFromPackage ( SoftDelete .class , classDetails , context );
331+ }
326332
333+ private static <A extends Annotation > A extractAnnotationFromMappedSuperclass (ClassDetails classDetails , Class <A > annotationClass , SourceModelBuildingContext sourceModelContext ) {
327334 ClassDetails classToCheck = classDetails .getSuperClass ();
328335 while ( classToCheck != null ) {
329- final SoftDelete fromSuper = classToCheck .getAnnotationUsage ( SoftDelete .class , sourceModelContext );
330- if ( fromSuper != null && classToCheck .hasAnnotationUsage ( jakarta .persistence .MappedSuperclass .class , sourceModelContext ) ) {
336+ final A fromSuper = classToCheck .getAnnotationUsage ( annotationClass , sourceModelContext );
337+ if ( fromSuper != null
338+ && classToCheck .hasAnnotationUsage ( jakarta .persistence .MappedSuperclass .class , sourceModelContext ) ) {
331339 return fromSuper ;
332340 }
333341
334342 classToCheck = classToCheck .getSuperClass ();
335343 }
336-
337- return extractFromPackage ( SoftDelete .class , classDetails , context );
344+ return null ;
338345 }
339346
340347 private void handleCheckConstraints () {
@@ -1594,12 +1601,21 @@ public void bindConcreteProxy() {
15941601 }
15951602
15961603 public void bindWhere () {
1597- final SQLRestriction restriction = getOverridableAnnotation ( annotatedClass , SQLRestriction . class , context );
1604+ final SQLRestriction restriction = extractSQLRestriction ( annotatedClass , context );
15981605 if ( restriction != null ) {
15991606 this .where = restriction .value ();
16001607 }
16011608 }
16021609
1610+ private static SQLRestriction extractSQLRestriction (ClassDetails classDetails , MetadataBuildingContext context ) {
1611+ final SourceModelBuildingContext sourceModelContext = context .getMetadataCollector ().getSourceModelBuildingContext ();
1612+ final SQLRestriction fromClass = classDetails .getAnnotationUsage ( SQLRestriction .class , sourceModelContext );
1613+ if ( fromClass != null ) {
1614+ return fromClass ;
1615+ }
1616+ return extractAnnotationFromMappedSuperclass ( classDetails , SQLRestriction .class , sourceModelContext );
1617+ }
1618+
16031619 public void setWrapIdsInEmbeddedComponents (boolean wrapIdsInEmbeddedComponents ) {
16041620 this .wrapIdsInEmbeddedComponents = wrapIdsInEmbeddedComponents ;
16051621 }
0 commit comments