[Seasar-user:1364] MySQLのBoolカラム
Hideaki Maekawa
maekawa
2004年 12月 16日 (木) 10:43:48 JST
前川です。
Booleanは私的にタイムリーなネタなんで便乗します。
MySQLを使用してプロパティにBoolean(ラッパーの方)を使用すると、
S2Dao(BeanDescImplかな?)が混乱するようです。ちなみにプロパティ
をbooleanにするか、getterをis〜ではなくget〜にすれば大丈夫です。
恐らくMySQLのBOOLがtinyInt(1)のシノニムなのでこれが元凶かと。
Beanクラス
-----------------------------------------------------------
public class T1 {
public static final String TABLE = "t1";
private Boolean bflg;
public Boolean isBflg() { //<---getBflg()にすれば大丈夫
return bflg;
}
public void setBflg(Boolean bflg) {
this.bflg = bflg;
}
}
diconファイル
-----------------------------------------------------------
<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<include path="dao.dicon"/>
<component class="seasar.T1Dao">
<aspect>dao.interceptor</aspect>
</component>
</components>
実行クラス
-----------------------------------------------------------
public class Test {
public static void main(String[] args) {
S2Container container = S2ContainerFactory.create("T1.dicon");
T1Dao dao = (T1Dao) container.getComponent(T1Dao.class);
T1 t = new T1();
t.setBflg(Boolean.TRUE);
dao.insert(t);
}
}
実行結果
-----------------------------------------------------------
[2004-12-16 10:18:26,043] [main] DEBUG (Logger.java:106) - 物理的なコネクションを取得しました
[2004-12-16 10:18:26,053] [main] DEBUG (Logger.java:106) - 論理的なコネクションを取得しました
[2004-12-16 10:18:26,203] [main] DEBUG (Logger.java:106) - 論理的なコネクションを閉じました
[2004-12-16 10:18:26,223] [main] DEBUG (Logger.java:106) - 論理的なコネクションを取得しました
[2004-12-16 10:18:26,223] [main] DEBUG (Logger.java:106) - 論理的なコネクションを閉じました
java.lang.NullPointerException
at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:27)
at org.seasar.framework.beans.impl.PropertyDescImpl.getValue(PropertyDescImpl.java:83)
at org.seasar.dao.impl.BeanMetaDataImpl.getAutoInsertBindVariables(BeanMetaDataImpl.java:570)
at org.seasar.dao.impl.InsertAutoHandler.getBindVariables(InsertAutoHandler.java:23)
at org.seasar.dao.impl.AbstractAutoHandler.execute(AbstractAutoHandler.java:53)
at org.seasar.dao.impl.AbstractAutoHandler.execute(AbstractAutoHandler.java:45)
at org.seasar.dao.impl.AbstractAutoStaticCommand.execute(AbstractAutoStaticCommand.java:22)
at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:37)
at org.seasar.framework.aop.impl.MethodInvocationImpl.proceed(MethodInvocationImpl.java:82)
at org.seasar.framework.aop.proxy.AopProxy.intercept(AopProxy.java:151)
at seasar.T1Dao$$EnhancerByCGLIB$$f9e2a5b2.insert(<generated>)
at seasar.Test.main(Test.java:41)
Exception in thread "main"
--
株式会社フリーダム システム開発部
前川英昭 <[E-MAIL ADDRESS DELETED]>
DFEC F450 263C 26D2 C3D1 3494 4D88 DA18 4EA5 1CD4
Seasar-user メーリングリストの案内