@@ -159,9 +159,17 @@ public class QueryCustomizer
159
159
DO NOTHING
160
160
""";
161
161
162
+ private static final String UPDATE_SESSION_ATTRIBUTE_QUERY = """
163
+ UPDATE %TABLE_NAME%_ATTRIBUTES
164
+ SET ATTRIBUTE_BYTES = encode(?, 'escape')::jsonb
165
+ WHERE SESSION_PRIMARY_ID = ?
166
+ AND ATTRIBUTE_NAME = ?
167
+ """;
168
+
162
169
@Override
163
170
public void customize(JdbcIndexedSessionRepository sessionRepository) {
164
171
sessionRepository.setCreateSessionAttributeQuery(CREATE_SESSION_ATTRIBUTE_QUERY);
172
+ sessionRepository.setUpdateSessionAttributeQuery(UPDATE_SESSION_ATTRIBUTE_QUERY);
165
173
}
166
174
167
175
}
@@ -230,7 +238,10 @@ public class SessionConfig implements BeanClassLoaderAware {
230
238
@Bean("springSessionConversionService")
231
239
public GenericConversionService springSessionConversionService(ObjectMapper objectMapper) { <1>
232
240
ObjectMapper copy = objectMapper.copy(); <2>
241
+ // Register Spring Security Jackson Modules
233
242
copy.registerModules(SecurityJackson2Modules.getModules(this.classLoader)); <3>
243
+ // Activate default typing explicitly if not using Spring Security
244
+ // copy.activateDefaultTyping(copy.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
234
245
GenericConversionService converter = new GenericConversionService();
235
246
converter.addConverter(Object.class, byte[].class, new SerializingConverter(new JsonSerializer(copy))); <4>
236
247
converter.addConverter(byte[].class, Object.class, new DeserializingConverter(new JsonDeserializer(copy))); <4>
@@ -301,9 +312,19 @@ public class SessionConfig {
301
312
VALUES (?, ?, encode(?, 'escape')::jsonb) <1>
302
313
""";
303
314
315
+ private static final String UPDATE_SESSION_ATTRIBUTE_QUERY = """
316
+ UPDATE %TABLE_NAME%_ATTRIBUTES
317
+ SET ATTRIBUTE_BYTES = encode(?, 'escape')::jsonb
318
+ WHERE SESSION_PRIMARY_ID = ?
319
+ AND ATTRIBUTE_NAME = ?
320
+ """;
321
+
304
322
@Bean
305
323
SessionRepositoryCustomizer<JdbcIndexedSessionRepository> customizer() {
306
- return (sessionRepository) -> sessionRepository.setCreateSessionAttributeQuery(CREATE_SESSION_ATTRIBUTE_QUERY);
324
+ return (sessionRepository) -> {
325
+ sessionRepository.setCreateSessionAttributeQuery(CREATE_SESSION_ATTRIBUTE_QUERY);
326
+ sessionRepository.setUpdateSessionAttributeQuery(UPDATE_SESSION_ATTRIBUTE_QUERY);
327
+ };
307
328
}
308
329
309
330
}
0 commit comments