Skip to content

Commit 1288ece

Browse files
committed
fix: repository updateField ignores registered Gson TypeAdapters (resolves gh-284)
1 parent 2d60af4 commit 1288ece

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

redis-om-spring/src/main/java/com/redis/om/spring/ops/json/JSONOperationsImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void set(K key, Object object) {
8989

9090
@Override
9191
public void set(K key, Object object, Path path) {
92-
client.clientForJSON().jsonSet(key.toString(), path, object);
92+
client.clientForJSON().jsonSetWithPlainString(key.toString(), path, builder.gson().toJson(object));
9393
}
9494

9595
@Override

redis-om-spring/src/test/java/com/redis/om/spring/annotations/document/BasicRedisDocumentMappingTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import redis.clients.jedis.json.Path;
1313

1414
import java.time.LocalDate;
15+
import java.time.LocalDateTime;
1516
import java.util.ArrayList;
1617
import java.util.List;
1718
import java.util.Optional;
@@ -35,6 +36,9 @@ class BasicRedisDocumentMappingTest extends AbstractBaseDocumentTest {
3536
@Autowired
3637
DocWithEnumRepository docWithEnumRepository;
3738

39+
@Autowired
40+
SomeDocumentRepository someDocumentRepository;
41+
3842
@BeforeEach
3943
void cleanUp() {
4044
flushSearchIndexFor(Company.class);
@@ -117,6 +121,18 @@ void testUpdateSingleField() {
117121
assertThat(maybeRedis).isPresent().map(Company::getName).contains("Redis");
118122
}
119123

124+
@Test
125+
void testUpdateLocalDateTimeField() {
126+
var now = LocalDateTime.now();
127+
SomeDocument docWithDateTime = new SomeDocument();
128+
docWithDateTime.setDocumentCreationDate(now);
129+
docWithDateTime = someDocumentRepository.save(docWithDateTime);
130+
131+
someDocumentRepository.updateField(docWithDateTime, SomeDocument$.DOCUMENT_CREATION_DATE, now.minusDays(5));
132+
133+
assertThat(someDocumentRepository.findById(docWithDateTime.getId()).get().getDocumentCreationDate()).isEqualToIgnoringNanos(now.minusDays(5));
134+
}
135+
120136
@Test
121137
void testAuditAnnotations() {
122138
Company redis = repository.save(

0 commit comments

Comments
 (0)