移行 0.8.9.17 to 0.8.9.18
お約束の注意点
- 新しいクラスのプロジェクトへの追加
- 新しいクラスがあるかもしれないので、追加を忘れずに (Koropokkur.NETの利用を推奨)
- タスクを実行し忘れないように
- Generateタスクだけでなく、(外だしSQLがある場合は)Sql2Entityタスクも実行
環境上の注意点
特になし
実装上の注意点
Behaviorの selectEntity(CB) において、絞り込み条件の全くない ConditionBean を指定したときに、明示的な例外が発生するようになりました。ConditionBean の一件検索は、一つ以上の where 句に入る条件、もしくは、fetchFirst(1) が必ず必要です。 (外だしSQL以外の)他の一件検索も同様です。
ex) selectEntityで条件なし (例外) {MEMBER} @Java
MemberCB cb = new MemberCB();
memberBhv.SelectEntity(cb); // exception
ex) selectEntityで無効な条件設定で条件なし (例外) {MEMBER} @Java
MemberCB cb = new MemberCB();
cb.Query().SetMemberId_Equal(null);
memberBhv.SelectEntity(cb); // exception
ex) selectEntityで有効な条件設定で条件なし (正常動作) {MEMBER} @Java
MemberCB cb = new MemberCB();
cb.Query().SetMemberId_Equal(3);
... = memberBhv.SelectEntity(cb);
ex) selectEntityで最初の一件だけをフェッチ (正常動作) {MEMBER} @Java
MemberCB cb = new MemberCB();
cb.FetchFirst(1);
... = memberBhv.SelectEntity(cb);
これは改善点で、そもそも条件のない ConditionBean を指定するなどして、selectEntity() の実行で複数件の結果が戻ったときは明示的な例外になっていましたが(フェッチの段階でのチェックなのでこれもできるだけ早い段階での検知としていますが)、 さらに今回の修正により、検索に入る前にチェックが掛かるようになり、より早い段階での例外による検知が可能になりました。例えば、1000 万件のテーブルに対する selectEntity() で間違って無効な条件が入って全件検索になってしまう場合に、長いSQLが戻ってくる前に例外になります。