19
19
import static org .assertj .core .api .Assertions .*;
20
20
import static org .mockito .Mockito .*;
21
21
22
- import java .util .Arrays ;
23
22
import java .util .Collection ;
24
- import java .util .Collections ;
25
23
import java .util .List ;
24
+ import java .util .Optional ;
26
25
import java .util .function .Consumer ;
27
26
28
27
import org .junit .jupiter .api .Test ;
37
36
import org .springframework .data .jdbc .core .convert .DataAccessStrategy ;
38
37
import org .springframework .data .jdbc .core .convert .JdbcConverter ;
39
38
import org .springframework .data .jdbc .core .convert .JdbcCustomConversions ;
40
- import org .springframework .data .jdbc .core .convert .RelationResolver ;
41
39
import org .springframework .data .jdbc .core .mapping .JdbcMappingContext ;
42
40
import org .springframework .data .relational .core .dialect .Dialect ;
43
- import org .springframework .data .relational .core .dialect .HsqlDbDialect ;
44
41
import org .springframework .data .relational .core .dialect .LimitClause ;
45
42
import org .springframework .data .relational .core .dialect .LockClause ;
46
43
import org .springframework .data .relational .core .sql .render .SelectRenderContext ;
@@ -77,11 +74,26 @@ void configuresInfrastructureComponents() {
77
74
void registersSimpleTypesFromCustomConversions () {
78
75
79
76
assertApplicationContext (context -> {
77
+
80
78
JdbcMappingContext mappingContext = context .getBean (JdbcMappingContext .class );
81
79
assertThat ( //
82
80
mappingContext .getPersistentEntity (AbstractJdbcConfigurationUnderTest .Blah .class ) //
83
81
).describedAs ("Blah should not be an entity, since there is a WritingConversion configured for it" ) //
84
82
.isNull ();
83
+
84
+ }, AbstractJdbcConfigurationUnderTest .class , Infrastructure .class );
85
+ }
86
+
87
+ @ Test // #908
88
+ void userProvidedConversionsOverwriteDialectSpecificConversions () {
89
+
90
+ assertApplicationContext (applicationContext -> {
91
+
92
+ Optional <Class <?>> customWriteTarget = applicationContext .getBean (JdbcCustomConversions .class )
93
+ .getCustomWriteTarget (Boolean .class );
94
+
95
+ assertThat (customWriteTarget ).contains (String .class );
96
+
85
97
}, AbstractJdbcConfigurationUnderTest .class , Infrastructure .class );
86
98
}
87
99
@@ -118,7 +130,7 @@ public Dialect jdbcDialect(NamedParameterJdbcOperations operations) {
118
130
119
131
@ Override
120
132
protected List <?> userConverters () {
121
- return asList (Blah2BlubbConverter .INSTANCE );
133
+ return asList (Blah2BlubbConverter .INSTANCE , BooleanToYnConverter . INSTANCE );
122
134
}
123
135
124
136
@ WritingConverter
@@ -153,12 +165,12 @@ public SelectRenderContext getSelectContext() {
153
165
154
166
@ Override
155
167
public Collection <Object > getConverters () {
156
- return asList (BooleanToNumberConverter .INSTANCE );
168
+ return asList (BooleanToNumberConverter .INSTANCE , NumberToBooleanConverter . INSTANCE );
157
169
}
158
170
}
159
171
160
172
@ WritingConverter
161
- enum BooleanToNumberConverter implements Converter <Boolean , Number >{
173
+ enum BooleanToNumberConverter implements Converter <Boolean , Number > {
162
174
INSTANCE ;
163
175
164
176
@ Override
@@ -168,7 +180,7 @@ public Number convert(Boolean source) {
168
180
}
169
181
170
182
@ ReadingConverter
171
- enum NumberToBooleanConverter implements Converter <Number , Boolean >{
183
+ enum NumberToBooleanConverter implements Converter <Number , Boolean > {
172
184
INSTANCE ;
173
185
174
186
@ Override
@@ -177,9 +189,8 @@ public Boolean convert(Number source) {
177
189
}
178
190
}
179
191
180
-
181
192
@ WritingConverter
182
- enum BooleanToYnConverter implements Converter <Boolean , String >{
193
+ enum BooleanToYnConverter implements Converter <Boolean , String > {
183
194
INSTANCE ;
184
195
185
196
@ Override
@@ -188,16 +199,6 @@ public String convert(Boolean source) {
188
199
}
189
200
}
190
201
191
- @ ReadingConverter
192
- enum StringToBooleanConverter implements Converter <String , Boolean >{
193
- INSTANCE ;
194
-
195
- @ Override
196
- public Boolean convert (String source ) {
197
- return source .equals ("Y" ) ;
198
- }
199
- }
200
-
201
202
}
202
203
203
204
}
0 commit comments