Почему запрос JPQL
Select new Foo(X,Y) from X join X.y as Y Where ...
выдает более одного sql? 1 для основного выбора и по 1 для X и Y?
Почему запрос JPQL
Select new Foo(X,Y) from X join X.y as Y Where ...
выдает более одного sql? 1 для основного выбора и по 1 для X и Y?
Давайте угадаем. Один запрос, который выбирает эти идентификаторы X, Y, а затем 1 запрос для X для загрузки других его полей (в конструкторе Foo), а затем 1 запрос для Y для загрузки других его полей (при доступе в конструкторе Foo).
Очевидно, вы могли бы легко сделать
SELECT new Foo(x.id, x.field2, x.field3, y.id, y.field2) FROM X join X.y as Y ...
и это (с DataNucleus JPA) сделает один SELECT.