[CONTAINER-373] [S2JDBC] @Temporal(TemporalType.TIME) が付けられたプロパティを持つエンティティに対する自動問い合わせで,S2BeanUtils を使って java.util.Date から変換された文字列のプロパティを持つ Map を引数として AutoSelect#where(Map) が呼び出すと,バインド変数に 00:00:00 が渡されてしまう問題を修正しました.[Seasar-user:17583] Created: 02/Jun/09  Updated: 04/Jun/09  Resolved: 04/Jun/09

Status: Resolved
Project: S2Container
Component/s: S2JDBC
Affects Version/s: 2.4.38
Fix Version/s: 2.4.39

Type: Bug Priority: Major
Reporter: koichik Assignee: koichik
Resolution: Fixed Votes: 0
Labels: None


 Description   

[S2JDBC] @Temporal(TemporalType.TIME) が付けられたプロパティを持つエンティティに対する自動問い合わせで,S2BeanUtils を使って java.util.Date から変換された文字列のプロパティを持つ Map を引数として AutoSelect#where(Map) が呼び出すと,バインド変数に 00:00:00 が渡されてしまう.[Seasar-user:17583]
http://ml.seasar.org/archives/seasar-user/2009-June/017584.html

CONTAINER-272 の修正により,S2BeanUtils で BeanMap へコピーすると,java.util.Date は文字列に変換されるようになった.その際,java.sql.Date と同じフォーマットが使われていたため,時刻が失われていたのを CONTAINER-370 で修正したが,S2JDBC は AutoSelect#where(Map) で受け取った Map の中の文字列を時制に応じた型に変換する必要がある.その際に使われるフォーマットは DateConversionUtil のデフォルトが使われているが,これが (またしても) 日付のみのフォーマットであるため,時刻が失われていた.

S2JDBC と S2BeanUtils で整合性が必要なので,(Date|Time|Timestamp)Type で S2BeanUtils と同じフォーマットを使うようにする.



 Comments   
Comment by koichik [ 02/Jun/09 ]

対応しました.
http://svn.seasar.org/browse/?view=rev&root=s2container&revision=4351

Comment by koichik [ 03/Jun/09 ]

ParseRuntimeException が発生するので再オープン
http://ml.seasar.org/archives/seasar-user/2009-June/017595.html

修正してるとき寝てたのか...??

Comment by koichik [ 03/Jun/09 ]

対応しました.
http://svn.seasar.org/browse/?view=rev&root=s2container&revision=4354

Comment by koichik [ 04/Jun/09 ]

互換性が気になったので再オープン.

Comment by koichik [ 04/Jun/09 ]

対応しました.
http://svn.seasar.org/browse/?view=rev&root=s2container&revision=4359

以前と同じ文字列からの変換もできるようにしました.
ただし DateTimeType が日付 (yyyy/MM/dd) からの変換できていたのは間違いだと思われるので,時刻 (HH:mm:ss) から変換できるようにしました.
DateSqlDateType および DateTimestampType は日付 (yyyy/MM/dd) から変換できます.でもなぜ DateTimestampType が日付から変換できるのかは微妙な気が.

まとめると,それぞれの型は以下のフォーマットの文字列を変換できます.

DateSqlDateType yyyy/MM/dd HH:mm:ss yyyy/MM/dd
DateTimeType yyyy/MM/dd HH:mm:ss HH:mm:ss
DateTimestampType yyyy/MM/dd HH:mm:ss yyyy/MM/dd
Generated at Sat Aug 24 17:02:52 JST 2019 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.