-
Notifications
You must be signed in to change notification settings - Fork 701
Closed
Description
I have an entity which will registerEvent when I update the field, and MyClassModifyEventHandler.handle() is expected to be executed upon repository.save() or repository.saveAll()
@DynamicInsert
@DynamicUpdate
@Entity
public class MyClass extends AbstractAggregateRoot<MyClass> {
@Id private UUID id;
@Column(name = "field")
private String field;
@CreationTimestamp Instant createdAt;
@UpdateTimestamp Instant updatedAt;
@Version Integer version;
public void setField(String field) {
this.field = field;
registerEvent(new MyClassModifyEvent(this));
}
}@Component
public class MyClassModifyEventHandler {
@EventListener
public void handle(final MyClassModifyEvent persistenceEvent) {
// do something
}
}I have a method which will query a list of MyClass and update their respective fields.
@Transactional
public void eventHandlerNotBeingCalled() {
// ..
Window<MyClass> myClasses =
myClassRepo.findFirst20(ScrollPosition.keyset());
for (MyClass myClass : myClasses) {
myClass.setField("newField");
}
myClassRepo.findFirst20.saveAll(myClasses);
// working solution
// myClassRepo.findFirst20.saveAll(myClasses.toList());
}So with this, the @EventListener is not working even though the event is registered before saveAll(). If I calling saveAll on List<MyClass> instead (ie myClassRepo.saveAll(myClasses.toList())), the MyClassModifyEventHandler.handle will be called. Is this expected behaviour?
Metadata
Metadata
Assignees
Labels
type: bugA general bugA general bug