2010-02-23 3 views
2

У меня есть класс A, который имеет список элементов B.получить размер списка в свойстве

В моем классе А я хотел бы добавить:

int size; 

, которые будут оценены с числом элементов B. Поэтому, когда я позвоню myA.getSize(), у меня это будет.

Возможно ли сопоставить запрос подсчета с одним свойством в сопоставлении спящего режима?

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

+2

Кстати, вы должны отметить ответы, как принято, если они работают для вас (через клеща ниже счетчика голосов) – Bozho

ответ

3

Возможно ли сопоставить запрос на подсчет с одним свойством в сопоставлении спящего режима?

Да, используйте formula:

<property name="size" type="integer" 
formula="(select count(a.getBs) from A a where a.id = aid)"> 
</property> 

Больше примеров в Example: Various Mappings.

+0

@Pascal: можно сделать то же самое с JPA аннотации? – Roman

+0

@Roman Hibernate имеет аннотацию '@ Formula', но это расширение для JPA. –

1

Другой подход заключается в использовании lazy = extra в коллекции. Это почти не упоминается в reference documentation и поясняется далее here.

Используйте ленивым = «лишний» на коллекцию для «умного» поведения коллекции, то есть некоторые инкассовые операции, такие как размер(), содержит(), получают() и т.д., не вызывают инициализации коллекции , Это только разумный для очень больших коллекций.

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

  • Нет связанных вопросов^_^