[Seasar-user:3747] [S2Dao] PostgreSQL INTERVAL型
田中 靖宏
[E-MAIL ADDRESS DELETED]
2006年 6月 4日 (日) 01:18:19 JST
田中久太郎です。
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 メーリングリストの案内