[Seasar-user:4164] 「not null であるカラムがありません」について
松山 大樹
[E-MAIL ADDRESS DELETED]
2006年 7月 24日 (月) 15:42:12 JST
松山です。
[seaser-user:3915] と似ているのですが、現在、次のような現象が発生していて、
ちょっと困っています。
確認したデータベースは、Oracle10g です。
--------------------------------------------
create table test (
userID numeric(3) Not Null,
userName varchar2(100)
);
Alter table test add Primary Key (userID);
--------------------------------------------
のように、主キー1つと、null可のカラム1つを持つテーブルを作成します。
対応するBean は、
--------------------------------------------
public class Test {
public static final String TABLE = "Test";
private int userID = 0;
private String userName = "";
--------------------------------------------
のようになっています(getter/setter は省略)。
DAO は、
--------------------------------------------
public interface TestDao {
public static final Class BEAN = Test.class;
public void insert(Test aTest);
}
--------------------------------------------
となっています。
このとき、
--------------------------------------------
Test test = new Test();
test.setUserID(1);
test.setUserName("TestUser");
testDao.insert(test);
--------------------------------------------
だと正常にInsert が成功しますが、
--------------------------------------------
Test test2 = new Test();
test2.setUserID(2);
test2.setUserName(null);
testDao.insert(test2);
--------------------------------------------
とやった場合、つまり、not null のカラムに1つも値をセットしないと、
--------------------------------------------
org.seasar.framework.exception.SRuntimeException: [EDAO0014]not nullであるカラムがありません
at org.seasar.dao.impl.InsertAutoDynamicCommand.createInsertPropertyTypes(InsertAutoDynamicCommand.java:119)
at org.seasar.dao.impl.InsertAutoDynamicCommand.execute(InsertAutoDynamicCommand.java:52)
at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53)
:
:
--------------------------------------------
と例外が発生します。
とりあえず、上記のような場合、null ではなく、"" をセットしてしのいでいますが、
対応していただけると助かります。
以上、よろしくお願いします。
--
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
::: ITシステム・インテグレートDiv.
::: Web・ソリューション&システム開発Unit.
::: 松山 大樹 - [E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内