Skip to content

Commit 0de4879

Browse files
committed
GH-261 - Avoid materializing JpaEventPublication to mark it completed.
We now simply issue an update query.
1 parent 1a84ae2 commit 0de4879

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

spring-modulith-events/spring-modulith-events-jpa/src/main/java/org/springframework/modulith/events/jpa/JpaEventPublicationRepository.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ class JpaEventPublicationRepository implements EventPublicationRepository {
5757
p.publicationDate asc
5858
""";
5959

60+
private static final String MARK_COMPLETED_BY_EVENT_AND_LISTENER_ID = """
61+
update JpaEventPublication p
62+
set p.completionDate = ?3
63+
where p.serializedEvent = ?1
64+
and p.listenerId = ?2
65+
""";
66+
6067
private static final String DELETE_COMPLETED = """
6168
delete
6269
from JpaEventPublication p
@@ -111,8 +118,11 @@ public EventPublication create(EventPublication publication) {
111118
@Transactional
112119
public void markCompleted(Object event, PublicationTargetIdentifier identifier, Instant completionDate) {
113120

114-
findEntityBySerializedEventAndListenerIdAndCompletionDateNull(event, identifier)
115-
.map(it -> it.completionDate = completionDate);
121+
entityManager.createQuery(MARK_COMPLETED_BY_EVENT_AND_LISTENER_ID)
122+
.setParameter(1, serializeEvent(event))
123+
.setParameter(2, identifier.getValue())
124+
.setParameter(3, completionDate)
125+
.executeUpdate();
116126
}
117127

118128
/*

0 commit comments

Comments
 (0)