|
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