dbflute / dbflute-core

DBFlute core libraries for Java8
http://dbflute.seasar.org/
23 stars 18 forks source link

DBFlute Runtime: assert batchUpdate() with uniqueBy() #160

Closed jflute closed 4 months ago

jflute commented 1 year ago

and without PK (for compatible) also BatchDelete

from Slack: https://dbflute.slack.com/archives/CAPH91CH2/p1658488810025909

jflute commented 1 year ago

like this:

(BatchUpdateUniqueByUnsupportedException)Look! Read the message below.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
The uniqueBy() of batch-update/delete is unsupported.

[Advice]
The uniqueBy() is only for entity-update.
So use primary key instead of unique column.
Or use entity-update.
For example:
  (x):
    for (...) {
        Member member = new Member();
        member.uniqueBy(memberAccount); // *Bad
        ...
    }
    memberBhv.batchUpdate(memberList);
  (o):
    for (...) {
        Member member = new Member();
        member.setMemberId(memberId); // Good: using PK
        member.setMemberAccount(memberAccount);
        ...
    }
    memberBhv.batchUpdate(memberList);
  (o):
    for (...) {
        Member member = new Member();
        member.uniqueBy(memberAccount);
        ...
        memberBhv.update(member); // Good: entity-update
    }

[Entity List]
Member:{null, null, Pixy, PRV, null, null, null, null, 2022-07-23T19:58:35.290, main, 0}@875580a9
Member:{null, null, Mijato, PRV, null, null, null, null, 2022-07-23T19:58:35.290, main, 3}@875580a9
Member:{null, null, Akagi, PRV, null, null, null, null, 2022-07-23T19:58:35.290, main, 0}@875580a9

[Option]
UpdateOption:{UpdateColumnSpecified}
* * * * * * * * * */