[Seasar-user:17548] [S2JDBC]時制を指定したプロパティを検索条件とした場合の動作について
UmedaYoshikazu
[E-MAIL ADDRESS DELETED]
2009年 5月 29日 (金) 02:31:43 JST
はじめまして、梅田と申します。
DBのアクセスに、S2JDBCを使用させて頂いています。
現在、seasar2.4.30を使用しており、2.4.37にアップしようとしましたが、
DB検索処理において、時制を指定したプロパティを検索条件に
含めた場合に、想定どおり動作しなくなってしまったため、質問
させて頂きました。
検索対象のエンティティには、時制「@Temporal(TemporalType.TIME)」
を指定したプロパティ「time」があり、このプロパティを検索条件として
検索を行うと、すべて「00:00:00」で検索されてしまいます。下記例では、
「time」プロパティが「10:00:00」のデータを検索したいのですが、
「00:00:00」として検索されてしまいます。
seasar2.4.30まではうまく動作していました。
検索実行で行っているBeanMapへの変換
「Beans.createAndCopy(BeanMap.class,condition).execute()」の時点で、
BeanMap内の「time」が「1970/01/01」になってしまっていることまでは
確認できました。
何か、こちらのロジックの組み方などに問題があるのでしょうか?
対処方法をご教授ください。
よろしくお願いします。
【エンティティ定義】
@Entity(name="xxx.entity")
@Table(schema="xxx",name="entity")
public class Entity implements Serializable{
・
・
・
@Id
@Temporal(TemporalType.TIME)
private Date time; //時刻
・
・
・
}
【検索処理(うまく動作しなくなってしまった部分。)】
//検索条件に10:00:00を指定
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date time = sdf.parse("10:00:00");
Entity condition = new Entity();
condition.setTime(time);
//検索実行
List<Entity> data =
aaaService.findByCondition(Beans.createAndCopy(BeanMap.class,condition).execute());
【ログ(一部マスクしています)】
DEBUG 2009-05-27 09:46:50,454
[main]org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN
xxx.aaaService#findByCondition({time=1970/01/01, xxx1=null, xxx2=null,
xxx3=null, xxx4=null, xxx5=null})
DEBUG 2009-05-27 09:46:50,454
[main]org.seasar.extension.jdbc.query.AutoSelectImpl - select T1_.xxx1 as
C1_,T1_.TIME as C2_, T1_.xxx2 as C3_, T1_.xxx3 as C4_, T1_.xxx4 as C5_,
T1_.xxx5 as C6_ from xxx.entity T1_ where (T1_.TIME = '00:00:00')
DEBUG 2009-05-27 09:46:50,454
[main]org.seasar.framework.aop.interceptors.TraceInterceptor - END
xxx.aaaService#findByCondition({time=1970/01/01, xxx1=null, xxx2=null,
xxx3=null, xxx4=null, xxx5=null}) : [2007-03-01,00:00:00,1,6,1932,0.53]
環境:seasar 2.4.37
JDK6u13
DB:PostgreSQL 8.3.5
Seasar-user メーリングリストの案内