読者です 読者をやめる 読者になる 読者になる

PostgreSQL Types.ARRAY

S2DaoからPostgreSQLのストアドプロシージャーを呼び出そうとしてるのですが、 引数に配列を使ってると、以下のようなエラーが出てしまう。 org.postgresql.util.PSQLException: Cannot cast an instance of [Ljava.lang.Integer; to type Types.ARRAYここで…

戻り値が boolean のメソッド

今日、ハマったこと。 S2Daoのメソッドで戻り値を boolean にしてる場合、自分の中では検索条件にヒットするものがあれば true を返すものとばかり思っていたが、違っていた。 正確には戻ってきた行の先頭カラムが「null」かどうかを返しているようだ。 自動…

例外

エンティティを取得する時に、nullだったら指定した例外を投げるということはできないのかな? そもそも、そういう処理をDaoにさせるのは良くないのかな。

更新対象行

更新の対象は1行(実際:0)でなければなりません。とエラーが出るのは、既にない行に対して更新をかけてるから? 対象が無かったら無かったでOKなんだけど、その場合はどうしたらいいんだろ。

maven

mvn installすると [INFO] Failed to resolve artifact.GroupId: org.apache.maven.plugins ArtifactId: maven-jar-plugin Version: 2.1-SNAPSHOTReason: Unable to download the artifact from any repository org.apache.maven.plugins:maven-jar-plugin:p…

定数参照

SQLファイルのバインド変数にOGNLって書けなくなってたんですね。 今の案件で、どうしてもインタフェースは変えたくなくて、 SQLに値を渡したいんですけど何か良い方法ないですかねぇ。 ソース見る限りではなさそう・・・

独り言

テーブル名と同じカラム名を持つものが関係を持っていると、プロパティ名がダブる。 カラムアノテーションを使えばいいのかも知れないけど、何かダサいのでテーブル変更しよう。 単純なもの以外は、自動生成のSQLでやり切ろうとするのは絶対無理だな。 やっ…

compareTo

Date型のプロパティにS2Daoから値を入れるとjava.sql.Timestampが入っているようなのですが、 そんなことは知らずに日付の比較をするためにcompateTo(Date target)を使うわけです。 JVM1.4では動くのですが、JVM1.5になるとClassCastExceptionでエラーになり…

依存関係

バージョンの依存関係が公式HPに書かれていなくてさっぱり分かりません。 また、バージョンアップしたときにどのファイルを置き換えればいいのかも分かりません。 S2.3.3 => S2.3.4 S2Dao1.0.28 => S2Dao1.0.29 でハマりました。 S2Daoはdao.diconが変わって…

解決

先日Tomcatだと動くがOAS10gだとエラーが出てた件ですが、解決しました。 使用していたJDBCドライバが違っていたのが原因でした。 J2EE1.4だと、PreparedStatement#executeQueryで「SELECT」を含んでいても大丈夫(たぶん)だけど、J2EE1.3だとNGというのが…

バッチ更新

insertBatch(List list)とした場合に、SQLファイルは使えないのでしょうか? ソースを見る限りでは使えそうにありません。 試しにSQLファイルを書いてみると単発のinsertとして実行された。 なんとかならんかのー

EntityManager

以前DTOアノテーションを作ったけど、EntityManagerには対応してませんでした。 EntityManagerに対応させようとソースを見たのですが、 決めうちでResulSetHandlerを返してました。 ちょっと簡単には対応できなさそう。

OGNL

SQLコメントにOGNLは使えないのでしょうか? 引数で渡す前に処理しておけってことかな。 追記 S2DaoのSQLコメントで、SQL文をバインディングすることはできないのでしょうか? 下記のような場合で、シーケンス「SEQ」から値を取得したい場合に、 getSequence…

DTOアノテーション改造記 その2

とりあえずできました。

DTOアノテーション改造記 その1 < さて何回目で完成するやら

すなあそびの宴会時にひがさんに聞いたときに、「そんなに難しくないよ」って言われたけど、やっぱり難しい。 DaoMetaDataImplだけ触ればいいよ。みたいなこと言われたけど、ソースを見た限りだめなような気がする。 AbstractBeanMetaDataResultSetHandler#c…

DTOアノテーション

自分なりにソースをいじってみたけど、ダメだった。 BEANアノテーションで作られたクラスを結構見てるので、 そこをDTOとすりかえるのは簡単にはできないような感じだ。 明日作者に聞いてみよう。

N:1

N:1で1側のオブジェクトがセットされない原因判明。 単に1側の主キーを取得してないからセットされてなかっただけみたい。 考えてみれば当たり前のことだった・・・

EntityManager

昨日言ってたinsert系のメソッドは中身を書かなくてもちゃんと動いているみたい。 でも、なんか気持ち悪いなぁ。 間違い、やっぱり入らない。 もう一つのN:1マッピングはいけてる。 EntityManagerを使いつつinsertとかも一つのDaoでやりたい場合はどうすれば…

EntityManager

QUERYアノテーションでWHERE句を書いているとN:1マッピングされないけど、 EntityManagerを使えば上手くいくのかな? とりあえず明日試してみよう。 この場合insertとかupdateはどうなるのだろう。 インタフェースだから実装する必要あるのかな、でも中身は?…

CASCADE

Hibernateのcascadeみたいに関連付いたテーブルのデータを消すことはできないのかなぁ それ以前に外部キーはってないからだめかなぁ

INSERTしたキー

S2Daoって今INSERTした主キーの値って取れないのかなぁ。 Hibernateは取れたのになぁ。 追記 取れました。 が、始めIDアノテーションのstaticが抜けているのに気が付かずにずっと 取れねー! ってハマってました。 これで一つ先に進める。

S2DaoTestCase

昨日作ったDaoのテストケースを書いてみようと思います。 AccountDaoTest.java package test.org.seasar.application.gusuku.dao;import java.util.List;import org.seasar.application.gusuku.dao.AccountDao; import org.seasar.dao.unit.S2DaoTestCase; i…

insert

下記のテーブルを使用します。DBはhsqldbです。 CREATE TABLE ACCOUNT ( ACCOUNTID INTEGER NOT NULL IDENTITY PRIMARY KEY , USERID LONGVARCHAR NOT NULL , PASSWORD LONGVARCHAR NOT NULL , EMAIL LONGVARCHAR NOT NULL , NAME LONGVARCHAR NOT NULL , RD…