DATAJDBC-287 - Polishing.
Moved the converter into it's own enum demonstrating good practices. Added `@ReadingConverter`. Original pull request: #106.
This commit is contained in:
@@ -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`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user