0

私は2つのテーブルを持っています:

1-デバイス:2-ユーザー:デバイスへの外部キーがあり、関係はManyToOneです。

デバイスのリストがあり、ユーザーに割り当てられていない場合はデバイスを削除できるため、すべてのデバイスを取得し、デバイスがユーザーに割り当てられているかどうかを確認してから、一時的なブールプロパティを次のように設定します。

List <Device> devices = systemSettingsDao.getAllDevices();
            for (Device device : devices)
                device.setDeletable(!systemSettingsDao
                        .isDeviceUsedByUser(device.getId()));

これをforループにせずに、クエリを使用してブールプロパティを設定するより洗練された方法(基準が望ましい)があるかどうか疑問に思っていましたか?

4

1 に答える 1

0

削除可能なすべてのデバイスを取得する方法は次のとおりです。

select distinct device from Device device where device.id not in (select u.device.id from User u)

これは Criteria API で簡単に変換できるはずです。

于 2012-05-10T10:09:39.257 に答える