1616import java .sql .PreparedStatement ;
1717import java .sql .ResultSet ;
1818import java .sql .SQLException ;
19- import java .sql .Timestamp ;
2019import java .sql .Types ;
2120import java .time .OffsetDateTime ;
22- import java .util .Calendar ;
2321
2422/**
2523 * Descriptor for {@link Types#TIMESTAMP_WITH_TIMEZONE TIMESTAMP_WITH_TIMEZONE} handling.
@@ -74,24 +72,8 @@ protected void doBind(
7472 X value ,
7573 int index ,
7674 WrapperOptions options ) throws SQLException {
77- try {
78- final OffsetDateTime dateTime = javaType .unwrap ( value , OffsetDateTime .class , options );
79- // supposed to be supported in JDBC 4.2
80- st .setObject ( index , dateTime , Types .TIMESTAMP_WITH_TIMEZONE );
81- }
82- catch (SQLException |AbstractMethodError e ) {
83- // fall back to treating it as a JDBC Timestamp
84- final Timestamp timestamp = javaType .unwrap ( value , Timestamp .class , options );
85- if ( value instanceof Calendar calendar ) {
86- st .setTimestamp ( index , timestamp , calendar );
87- }
88- else if ( options .getJdbcTimeZone () != null ) {
89- st .setTimestamp ( index , timestamp , Calendar .getInstance ( options .getJdbcTimeZone () ) );
90- }
91- else {
92- st .setTimestamp ( index , timestamp );
93- }
94- }
75+ final OffsetDateTime dateTime = javaType .unwrap ( value , OffsetDateTime .class , options );
76+ st .setObject ( index , dateTime , Types .TIMESTAMP_WITH_TIMEZONE );
9577 }
9678
9779 @ Override
@@ -101,24 +83,8 @@ protected void doBind(
10183 String name ,
10284 WrapperOptions options )
10385 throws SQLException {
104- try {
105- final OffsetDateTime dateTime = javaType .unwrap ( value , OffsetDateTime .class , options );
106- // supposed to be supported in JDBC 4.2
107- st .setObject ( name , dateTime , Types .TIMESTAMP_WITH_TIMEZONE );
108- }
109- catch (SQLException |AbstractMethodError e ) {
110- // fall back to treating it as a JDBC Timestamp
111- final Timestamp timestamp = javaType .unwrap ( value , Timestamp .class , options );
112- if ( value instanceof Calendar calendar ) {
113- st .setTimestamp ( name , timestamp , calendar );
114- }
115- else if ( options .getJdbcTimeZone () != null ) {
116- st .setTimestamp ( name , timestamp , Calendar .getInstance ( options .getJdbcTimeZone () ) );
117- }
118- else {
119- st .setTimestamp ( name , timestamp );
120- }
121- }
86+ final OffsetDateTime dateTime = javaType .unwrap ( value , OffsetDateTime .class , options );
87+ st .setObject ( name , dateTime , Types .TIMESTAMP_WITH_TIMEZONE );
12288 }
12389 };
12490 }
@@ -128,44 +94,17 @@ public <X> ValueExtractor<X> getExtractor(final JavaType<X> javaType) {
12894 return new BasicExtractor <>( javaType , this ) {
12995 @ Override
13096 protected X doExtract (ResultSet rs , int position , WrapperOptions options ) throws SQLException {
131- try {
132- // supposed to be supported in JDBC 4.2
133- return javaType .wrap ( rs .getObject ( position , OffsetDateTime .class ), options );
134- }
135- catch (SQLException |AbstractMethodError e ) {
136- // fall back to treating it as a JDBC Timestamp
137- return options .getJdbcTimeZone () != null ?
138- javaType .wrap ( rs .getTimestamp ( position , Calendar .getInstance ( options .getJdbcTimeZone () ) ), options ) :
139- javaType .wrap ( rs .getTimestamp ( position ), options );
140- }
97+ return javaType .wrap ( rs .getObject ( position , OffsetDateTime .class ), options );
14198 }
14299
143100 @ Override
144101 protected X doExtract (CallableStatement statement , int position , WrapperOptions options ) throws SQLException {
145- try {
146- // supposed to be supported in JDBC 4.2
147- return javaType .wrap ( statement .getObject ( position , OffsetDateTime .class ), options );
148- }
149- catch (SQLException |AbstractMethodError e ) {
150- // fall back to treating it as a JDBC Timestamp
151- return options .getJdbcTimeZone () != null ?
152- javaType .wrap ( statement .getTimestamp ( position , Calendar .getInstance ( options .getJdbcTimeZone () ) ), options ) :
153- javaType .wrap ( statement .getTimestamp ( position ), options );
154- }
102+ return javaType .wrap ( statement .getObject ( position , OffsetDateTime .class ), options );
155103 }
156104
157105 @ Override
158106 protected X doExtract (CallableStatement statement , String name , WrapperOptions options ) throws SQLException {
159- try {
160- // supposed to be supported in JDBC 4.2
161- return javaType .wrap ( statement .getObject ( name , OffsetDateTime .class ), options );
162- }
163- catch (SQLException |AbstractMethodError e ) {
164- // fall back to treating it as a JDBC Timestamp
165- return options .getJdbcTimeZone () != null ?
166- javaType .wrap ( statement .getTimestamp ( name , Calendar .getInstance ( options .getJdbcTimeZone () ) ), options ) :
167- javaType .wrap ( statement .getTimestamp ( name ), options );
168- }
107+ return javaType .wrap ( statement .getObject ( name , OffsetDateTime .class ), options );
169108 }
170109 };
171110 }
0 commit comments