Polishing.
Moved the converter into it's own enum demonstrating good practices.
Added `@ReadingConverter`.
Original pull request:
@@ -145,27 +145,45 @@ This also means references are 1-1 or 1-n, but not n-1 or n-m.
If you have n-1 or n-m references, you are, by definition, dealing with two separate aggregates.
References between those should be encoded as simple `id` values, which should map properly with Spring Data JDBC.
+
+[[jdbc.entity-persistence.custom-converters]]
=== Custom converters
-Custom coverters can be registered, for types that are not supported by default, by inheriting your configuration from `JdbcConfiguration` and overwriting the method `jdbcCustomConversions()`.
+
+Custom converters can be registered, for types that are not supported by default, by inheriting your configuration from `JdbcConfiguration` and overwriting the method `jdbcCustomConversions()`.
+
====
[source, java]
----
@Configuration
public class DataJdbcConfiguration extends JdbcConfiguration {
+
@Override
protected JdbcCustomConversions jdbcCustomConversions() {
- return new JdbcCustomConversions(Arrays.asList(new Converter<TIMESTAMPTZ, Date>() {
+
+ return new JdbcCustomConversions(Collections.singletonList(TimestampTzToDateConverter.INSTANCE));
+
+ }
+
+ @ReadingConverter
+ enum TimestampTzToDateConverter implements Converter<TIMESTAMPTZ, Date> {
+
+ INSTANCE;
+
@Override
public Date convert(TIMESTAMPTZ source) {
//...
}
- }));
}
}
----
====
+
The constructor of `JdbcCustomConversions` accepts a list of `org.springframework.core.convert.converter.Converter`.
+Converters should be annotated with `@ReadingConverter` or `@WritingConverter` in order to control their applicability to only reading from or to writing to the database.
+
+`TIMESTAMPTZ` in the example is a database specific data type that needs conversion into something more suitable for a domain model.
+
[[jdbc.entity-persistence.naming-strategy]]
=== `NamingStrategy`
