2011-01-08 2 views
2

Возможно ли сопоставить результат агрегированного запроса с полем в объекте домена с поддержкой гибернации?Отображение результата агрегированного запроса для объекта спящего режима

Например: Если у меня есть объект Car, который выглядит следующим образом -

@Entity 
public class Car { 
    @Id 
    private int id; 
    @Column 
    private String carName; 
    private int carCount; 
    ---Getters/Setters--- 
} 

Я хотел бы поле carCount/свойства быть общим количеством всех автомобилей в моей настойчивости магазине, является это возможно?

Я посмотрел на документацию Hibernate, я могу выполнить запрос, но я не вижу, где я могу установить это значение на «carCount»

Спасибо.

+1

Всего комментариев: carCount is * not * свойство для конкретного экземпляра. Это свойство, связанное с классом Car. Таким образом, он лучше подходит для «статического» свойства. Если вы используете шаблон ActiveRecord, это довольно просто, но если вы используете какой-то шаблон DAO с «немыми» DTO, тогда вы оставите этот carCount вне своего DTO и реализуете метод в вашем DAO, например, «int getCarCount ()». – jpkrohling

+0

Да, я использую шаблон DAO. Я надеялся уйти от двух звонков в мой DAO, но я думаю, мне придется это сделать. Если, конечно, я не хочу использовать аннотацию @Formula, предоставляемую Hibernate; но тогда я действительно привязан к Hibernate –

ответ

6

Вы можете сделать это с помощью формулы. Нечто подобное,

@Entity 
public class Car { 
    @Id 
    private int id; 
    @Column 
    private String carName; 

    @Formula("select count(*) from Car c where c.id = id") 
    private int carCount; 
} 

Кроме того, есть некоторые примеры here.

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