feat(iam): add @PrePersist callback to auto-populate User.createdAt
Add onCreate() method with @PrePersist annotation that sets createdAt to LocalDateTime.now() on first persist, consistent with other entities (UserTariff, CommunityTariff, etc.). Guard prevents overwriting existing values. Two new tests verify auto-population and idempotency.
This commit is contained in:
parent
f1cf152091
commit
3e336ca3c9
@ -65,6 +65,13 @@ public class User implements UserDetails {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private boolean enabled = false;
|
private boolean enabled = false;
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
if (createdAt == null) {
|
||||||
|
createdAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NonNull
|
@NonNull
|
||||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||||
|
|||||||
@ -33,4 +33,28 @@ class UserTest {
|
|||||||
|
|
||||||
assertNull(user.getCreatedAt(), "createdAt should default to null (not auto-generated)");
|
assertNull(user.getCreatedAt(), "createdAt should default to null (not auto-generated)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void prePersistSetsCreatedAt() {
|
||||||
|
User user = new User();
|
||||||
|
|
||||||
|
LocalDateTime before = LocalDateTime.now();
|
||||||
|
user.onCreate();
|
||||||
|
LocalDateTime after = LocalDateTime.now();
|
||||||
|
|
||||||
|
assertNotNull(user.getCreatedAt(), "createdAt must be set by @PrePersist callback");
|
||||||
|
assertFalse(user.getCreatedAt().isBefore(before), "createdAt must not be before test start");
|
||||||
|
assertFalse(user.getCreatedAt().isAfter(after), "createdAt must not be after test end");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void prePersistDoesNotOverwriteExistingCreatedAt() {
|
||||||
|
User user = new User();
|
||||||
|
LocalDateTime fixed = LocalDateTime.of(2025, 1, 1, 12, 0);
|
||||||
|
user.setCreatedAt(fixed);
|
||||||
|
|
||||||
|
user.onCreate();
|
||||||
|
|
||||||
|
assertEquals(fixed, user.getCreatedAt(), "createdAt must not be overwritten if already set");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user