Есть ли способ с помощью JPA CriteriaBuilder получить объект, не являющийся сущностью?

Скажем, я хочу сделать выбор из двух баз данных. В базе данных1 есть поля A, B и C. В базе данных2 есть поля D, E и F. У меня есть POJO, состоящий из полей X, Y и Z. Я хочу написать запрос CriteriaBuilder, чтобы выбрать все поля B, D и F. в наборе результатов и сопоставьте их с полями X, Y и Z в моем POJO, возвращая список моих объектов POJO. Это возможно? Я могу сделать это с помощью собственного запроса, но я не хочу использовать собственные запросы.


person user1148956    schedule 03.03.2012    source источник
comment
У вас есть две базы данных или две таблицы? JPA работает с сущностями. Не со столами. Покажите нам эти объекты и их сопоставление.   -  person JB Nizet    schedule 03.03.2012
comment
Извините, я оговорился. Это 2 таблицы... не 2 базы данных. Entity1 сопоставляется с Table1 и содержит поля A, B и C. Entity2 сопоставляется с Table2 и содержит поля D, E и F. Я хочу выбрать из них, но я хочу, чтобы мой результат был списком 3-го не-сущности ПОЖО. Я хочу, чтобы мой POJO содержал 3 поля — X, Y и Z. Я хочу, чтобы эти 3 поля содержали результаты запроса из Entity1.B, Entity2.D и Entity2.F соответственно. И я хочу иметь возможность выполнить запрос и получить этот список результатов с помощью CriteriaBuilder.   -  person user1148956    schedule 03.03.2012


Ответы (1)


Вы можете попробовать использовать приведенный ниже запрос, чтобы вернуть объект, инициализированный другими объектами:

SELECT NEW com.package.Entity3(e1.b, e2.d, e2.f) FROM Entity e1, Entity e2;

Затем вы должны предоставить конструктор с такой же подписью, как и в запросе, где вы можете установить значения полей по мере необходимости.

public Entity3(int b, int d, int f){
   x = b;
   y = d;
   z = f;
}
person Nayan Wadekar    schedule 04.03.2012