[Seasar-user:3749] Re: [S2Dao] PostgreSQL INTERVAL型

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 6月 4日 (日) 15:52:18 JST


米林です。

From: "田中 靖宏" <[E-MAIL ADDRESS DELETED]>
Sent: Sunday, June 04, 2006 1:18 AM

試していないので分かりませんが、エラーの内容の通り
ではないでしょうか。
Intervalは日付/時刻型なのでFoo.javaのvalueフィールドを
日付型に変えて試してみたらどうでしょうか?
====================================
private Timestamp value;
public void setValue(Timestamp value){
    this.value = value;
}
public Timestamp getValue(){
    return this.value;
}
====================================

> 田中久太郎です。
>
> S2Daoを利用して PostgreSQLのInterval型の列にアクセスしたいのですが、テス
> ト(FooDaoTest)に失敗して、以下のエラーが出ます。
>
> org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外
> が発生しました。理由はorg.postgresql.util.PSQLException: ERROR: column
> "value" is of type interval but expression is of type character varying
>
> S2Daoで、PostgreSQLのInterval型の列を扱うにはどのようにすれば良いでしょ
> うか?
> 良い方法をご存知の方はご教示ください。
>
> ソースは以下に載せておきます。
>
> PostgreSQL
>
> ■ INTERVAL型の列を持つテーブル
> CREATE TABLE foo
> (id INTEGER
> ,value INTERVAL
> ,CONSTRAINT foo_pkey PRIMARY KEY (id)
> );
>
> ■ Foo.java (DTO)
> package model;
>
> public class Foo {
>
> public static final String TABLE = "foo";
>
> private int id;
> private String value;
>
> public int getId() {
> return id;
> }
> public void setId(int id) {
> this.id = id;
> }
> public String getValue() {
> return value;
> }
> public void setValue(String value) {
> this.value = value;
> }
> }
>
> ■ FooDao.java (DAO)
> package dao;
>
> import model.Foo;
>
> public interface FooDao {
> public static final Class BEAN = Foo.class;
>
> public static final String findFoo_QUERY = "id = /*tid*/1";
> public static final String findFoo_ARGS = "tid";
>
> public void insert(Foo Foo);
> public int update(Foo Foo);
> public int delete(Foo Foo);
>
> public Foo findFoo(int tid);
> }
>
> ■ FooDaoTest.java (テストプログラム)
> package dao;
>
> import model.Foo;
> import org.seasar.dao.unit.S2DaoTestCase;
>
> public class FooDaoTest extends S2DaoTestCase {
> FooDao dao;
>
> public FooDaoTest(String name) {
> super(name);
> }
> protected void setUp() throws Exception {
> super.setUp();
> include("foo.dao.dicon");
> }
>
> public void testInsert() {
> Foo foo = new Foo();
> foo.setId(1);
> foo.setValue("12:15:00");
>
> dao.insert(foo);
>
> Foo selectFoo = dao.findFoo(1);
> System.out.println(selectFoo.getId());
> System.out.println(selectFoo.getValue());
>
> dao.delete(foo);
> }
> }
>
>
> ■ foo.dao.dicon
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
> "http://www.seasar.org/dtd/components23.dtd">
> <components>
> <include path="dao.dicon" />
> <component name="FooDao" class="dao.FooDao">
> <aspect>interceptor</aspect>
> </component>
> </components>
>
> ■ FooDaoTest実行時のエラー
> org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外
> が発生しました。理由はorg.postgresql.util.PSQLException: ERROR: column
> "value" is of type interval but expression is of type character varying
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
> 




Seasar-user メーリングリストの案内