2010-10-27 3 views
3

Я использую Hibernate с моим проектом Spring MVC.Агрегаты гибернации + Spring MVC

Допустим, моя модель имеет 2 объекты, каждый из связанных с таблицами Oracle, соответственно USERS (USERID, NAME) и USERMONEYDATA (CATEGORY, USERID, AMOUNT)

можно добавить Мои пользователи, редактировать и удалять строки в USERMONEYDATA, что принадлежит им, конечно. Теперь я хочу иметь представление, которое объединяет эти данные.

Используя оракул, я сделал простой вид, чтобы получить общее количество для каждого пользователя и категории:

select userid, category, sum(amount) 
from USERS a inner join USERMONEYDATA b on a.USERID = b.USERID 
group by userid, category 

Но что это лучший способ, чтобы использовать его? должен ли я создать новый объект MODEL специально для этого представления?

Следует ли агрегировать непосредственно в спящем режиме? Но если да, то как мне показать результаты, если у меня нет конкретного объекта POJO для его сопоставления?

благодаря

ответ

1

Если User и UserMoneyData отображаются в виде Hibernate сущностей, это естественный выбор для выполнения агрегированных запросов в спящем режиме.

По умолчанию предложение HQL или JPQL SELECT с несколькими путями создает кортежи в форме Object[]. Поскольку данные такого типа доступны только для чтения, вы можете отображать эти массивы напрямую, не преобразовывая их в объекты.

Другой вариант - создать POJO для представления результатов запроса и использовать синтаксис конструктора SELECT NEW MoneyReport(u.userId, d.category, SUM(d.amount)) .... Эти POJO не должны быть сущностями.

Смотрите также:

Смежные вопросы