|
14 | 14 | import org.hibernate.boot.internal.ClassLoaderAccessImpl; |
15 | 15 | import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; |
16 | 16 | import org.hibernate.engine.spi.SessionFactoryImplementor; |
| 17 | +import org.hibernate.event.spi.PreCollectionUpdateEvent; |
| 18 | +import org.hibernate.event.spi.PreCollectionUpdateEventListener; |
17 | 19 | import org.hibernate.event.spi.PreDeleteEvent; |
18 | 20 | import org.hibernate.event.spi.PreDeleteEventListener; |
19 | 21 | import org.hibernate.event.spi.PreInsertEvent; |
|
36 | 38 | import jakarta.validation.Validator; |
37 | 39 | import jakarta.validation.ValidatorFactory; |
38 | 40 |
|
| 41 | +import static org.hibernate.internal.util.NullnessUtil.castNonNull; |
| 42 | + |
39 | 43 | /** |
40 | 44 | * Event listener used to enable Bean Validation for insert/update/delete events. |
41 | 45 | * |
|
44 | 48 | */ |
45 | 49 | //FIXME review exception model |
46 | 50 | public class BeanValidationEventListener |
47 | | - implements PreInsertEventListener, PreUpdateEventListener, PreDeleteEventListener, PreUpsertEventListener { |
| 51 | + implements PreInsertEventListener, PreUpdateEventListener, PreDeleteEventListener, PreUpsertEventListener, PreCollectionUpdateEventListener { |
48 | 52 |
|
49 | 53 | private static final CoreMessageLogger LOG = Logger.getMessageLogger( |
50 | 54 | CoreMessageLogger.class, |
@@ -121,6 +125,17 @@ public boolean onPreUpsert(PreUpsertEvent event) { |
121 | 125 | return false; |
122 | 126 | } |
123 | 127 |
|
| 128 | + @Override |
| 129 | + public void onPreUpdateCollection(PreCollectionUpdateEvent event) { |
| 130 | + final Object entity = castNonNull( event.getCollection().getOwner() ); |
| 131 | + validate( |
| 132 | + entity, |
| 133 | + event.getSession().getEntityPersister( event.getAffectedOwnerEntityName(), entity ), |
| 134 | + event.getFactory(), |
| 135 | + GroupsPerOperation.Operation.UPDATE |
| 136 | + ); |
| 137 | + } |
| 138 | + |
124 | 139 | private <T> void validate( |
125 | 140 | T object, |
126 | 141 | EntityPersister persister, |
|
0 commit comments