[Seasar-user:17809] [S2JDBC] where句の生成で、Parameter.timestamp は 文字列による生成専用(SimpleWhere では使えない)でしょうか?
O.K.U.
[E-MAIL ADDRESS DELETED]
2009年 6月 21日 (日) 03:27:41 JST
久しぶり(3年ぶり?)に投稿いたします。
以前は S2JSF でよくお世話になりました、O.K.U.と申します。
今回は S2JDBC に関する質問です。
where句の自動生成で、java.util.Calendar 型のデータを扱う場合に
org.seasar.extension.jdbc.parameter.Parameter.timestamp(Calendar)で
ラップすると、SQL文字列による指定ではうまく動作しますが、
SimpleWhereによる指定 では ParseRuntimeException が発生します。
date(), time() も同様です。これら
org.seasar.extension.jdbc.parameter.Parameter.
パッケージは文字列によるSQL生成専用のクラスなのでしょうか?
SimpleWhereでは、DB の timestamp 型との比較は
単純に Calendar をそのまま,あるいは java.sql.Timestamp 型で
渡せばよいのでしょうか?
3年たっても、質問ばかりで申し訳ございませんが、
ご教授よろしくお願いいたします。
例)
import static org.seasar.extension.jdbc.parameter.Parameter.*;
public List<TestTbl> findByLastUpdate(Calendar lastTime) {
return select().where(new SimpleWhere().le("lastUpdate",
timestamp(lastTime))).getResultList();
}
rg.seasar.framework.exception.ParseRuntimeException: [ESSR0050]解析に失敗しました。理由はjava.text.ParseException: Unparseable date:
"[E-MAIL ADDRESS DELETED]"
at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:97)
at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:80)
at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:68)
at
org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConversionUtil.java:57)
at
org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConversionUtil.java:43)
at
org.seasar.extension.jdbc.types.TimestampType.toTimestamp(TimestampType.java:88)
at
org.seasar.extension.jdbc.types.TimestampType.toText(TimestampType.java:95)
at
org.seasar.extension.jdbc.util.BindVariableUtil.getBindVariableText(BindVariableUtil.java:155)
at
org.seasar.extension.jdbc.util.BindVariableUtil.getCompleteSql(BindVariableUtil.java:103)
at
org.seasar.extension.jdbc.query.AbstractQuery.logSql(AbstractQuery.java:165)
at
org.seasar.extension.jdbc.query.AbstractSelect.getResultList(AbstractSelect.java:170)
at test.service.TestTblService.findByLastUpdate(TestTblService.java:46)
【中略】
Caused by: java.text.ParseException: Unparseable date:
"[E-MAIL ADDRESS DELETED]"
at java.text.DateFormat.parse(DateFormat.java:337)
at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:95)
文字列による生成(↓)はOK
public List<TestTbl> findByLastUpdate2(Calendar lastTime) {
return select().where("lastUpdate < ?",
timestamp(lastTime)).getResultList();
}
Seasar-user メーリングリストの案内