Criteria API(NativeSql)を使用した複数エンティティへの射影 #974
-
目的:複数エンティティ取得時、取得する列を制限したい相談内容いつも大変お世話になっております。 私の参加しているプロジェクトでは、「複数エンティティの選択 (NativeSql)」を使用し、一つのクエリで複数のエンティティを一括で取得したいシチュエーションが頻繁に登場します。 このような場合、NativeSqlで実現できるような実装方法はございますでしょうか。もしくは、事前にその目的に応じてフィールドの数を減らしたEntityを別で定義しておいたりなど、別の形で実現した方が良いでしょうか。 動作環境
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
下記のように一度RowのListで受け取り、1行ごとにRowを任意のEntity群に詰め替えてはいかがでしょうか? Employee_ e = new Employee_();
Address_ a = new Address_();
List<Row> rows = nativeSql.from(e).leftJoin(a, ...).selectAsRow(e.employeeName, e.employeeNo, a.street).fetch();
List<Tuple2<Employee, Address>> list = rows.stream().map(row -> {...}); // EmployeeやAddressのエンティティに詰め替える ドキュメントとしては下記を参照ください。 |
Beta Was this translation helpful? Give feedback.
-
できないです。
この方法は有効だと思います。 |
Beta Was this translation helpful? Give feedback.
下記のように一度RowのListで受け取り、1行ごとにRowを任意のEntity群に詰め替えてはいかがでしょうか?
ドキュメントとしては下記を参照ください。
https://doma.readthedocs.io/en/latest/criteria-api/#column-projection-nativesql