2007/09/14

ibatisのはまりどころ:JDBCタイプのARRAYを利用する

いやー、ぜんぜんドキュメントがないのでまいりました。はまること1時間。やっとみつけました。
これはツールadabarで行う方法ですが直接SQLMAP.xmlに記述でもできると思います。
ではそのやりかたですが


javaType="int" jdbcType="INTEGER" />
javaType="String" jdbcType="VARCHAR" />
javaType="int" jdbcType="INTEGER" />
javaType="java.sql.Array" jdbcType="ARRAY"
typeHandler="com.ibatis.sqlmap.engine.type.ObjectTypeHandler" />


ポイントはtypeHandlerの指定とそれをフルパスで指定すること

そうすれば以下のように
ShainDAO dao =
(ShainDAO) daoManager.getDao(ShainDAO.class);
Shain shain = new Shain();
// shain.setShainId(111);
shain = dao.selectByPrimaryKey(111);
System.out.println(shain.getShainName());
String[] a = (String[])shain.getColary().getArray();
System.out.println(a[0]);

で取得できます。
ibatis便利だー。

2007/09/11

ibatisのはまりどころ:データをDAOを利用してインサート時

インサートするテーブルの主キーがシリアルタイプの場合(オートナンバー)
Eclipseツールのabatorを利用してDAO作成時にabatorConfig.xmlの設定ファイルとして
以下のようにする。





但し、PostGresの場合だけあとは固定値のMySQLとかSQLServerとかを設定。

2007/09/03

postgresのはまりどころ:Lower関数に泣く!

initdbのときにロケールなしで指定しておかないとSQL関数のlower等で以下のようなエラーが発生。

ERROR: invalid multibyte character for locale
SQLステート:22021
ヒント:The server's LC_CTYPE locale is probably incompatible with the database encoding.



回避方法はDBのデータを一旦、pgdumpall等で退避しておいて以下のコマンドで再度DB構築
initdb --locale=C 各種オプション...

以上

2007/09/02

phpのはまりどころ:sendmailではまる

linuxでmail関数等を利用する場合にsendmail_pathの設定が必要になるがそのほかに
sendmailのサービスをたちあげておかなければならない。

>sendmail-8.12以降ではセキュリティ強化のため mailコマンドによる
>メール送信の際にも MTA(sendmailデーモン)が必要となっています。

更にapacheユーザーがsendmailのメールキューをためておくディレクトリ
「/var/spool/clientmqueue/」の参照、書込み権限等がないだめ。
/etc/groupのsmnpユーザーにに追加しよう。