diff --git a/src/main/asciidoc/jdbc.adoc b/src/main/asciidoc/jdbc.adoc index a6bfee09e..88e4bad56 100644 --- a/src/main/asciidoc/jdbc.adoc +++ b/src/main/asciidoc/jdbc.adoc @@ -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() { + + return new JdbcCustomConversions(Collections.singletonList(TimestampTzToDateConverter.INSTANCE)); + + } + + @ReadingConverter + enum TimestampTzToDateConverter implements Converter { + + 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`