[DBFLUTE-186] {Java}: 主キー以外の条件値でdeleteできるようにする Created: 2008-01-21 Updated: 2008-01-24 Resolved: 2008-01-24 |
|
| Status: | Closed |
| Project: | DBFlute |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major |
| Reporter: | jflute | Assignee: | jflute |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
やはりニーズが高い。 既存のdelete()の引数のEntityにPKがなければ別のカラムの値でDeleteってのも ConditionBeanを使った場合だと以下のような感じ: MemberCB cb = new MemberCB(); cb.query().setMemberStatusCode_Equal_Formalized(); memberBhv.queryDelete(cb); delete from MEMBER where MEMBER_ID in ( select MEMBER_ID from MEMBER where MEMBER_STATUS_CODE = 'FML' ) ConditionBeanは逆に結合先条件など何か何までできるので、 実現としては、そんなに難しくはないかもしれない。 Entityを使った場合だと以下のような感じ: Member member = new Member(); member.classifyMemberStatusCodeFormalized(); member.delete(member); delete from MEMBER where MEMBER_STATUS_CODE = 'FML' 他のプロパティにも値が入ってたらどうしよう... 実現としては、S2Dao内部を豪快にOverrideする必要がありそう。 |
| Comments |
| Comment by jflute [ 2008-01-22 ] |
|
実装した。 /**
* Queryを使った削除の基本的な実装。<br />
* ConditionBeanで設定した条件で一括削除が可能である。(排他制御はない)<br />
*/
public void test_queryDelete_Basic_Tx() throws Exception {
// ## Arrange ##
final PurchaseCB cb = new PurchaseCB();
cb.query().setPurchaseCount_GreaterEqual(2);
int expected = purchaseBhv.selectCount(cb);
// ## Act ##
final int actual = purchaseBhv.queryDelete(cb);
// ## Assert ##
assertNotSame(0, actual);
assertEquals(expected, actual);
}
|
| Comment by jflute [ 2008-01-21 ] |
|
独自のSqlHandlerとSqlCommandを作ることになる。 |