Как применить ограничение по умолчанию для отношений Entity-Bean @OneToMany - PullRequest
3 голосов
/ 18 августа 2010

У меня есть две модели сущностей: Клиент и Заказ. Каждый клиент может иметь тысяч заказов. У меня есть отношения OneToMany и ManyToOne между этими двумя объектами.

Как мне ограничить список этих отношений только топ-10 ордерами?

Возможно ли применить условие "ГДЕ" в качестве атрибута к @OneToMany или нет?

Как:

@OneToMany("Where Order.orderNo > 100")

Моя проблема, когда объект, созданный Entity Manager, все заказы создаются в памяти. Ленивая загрузка не может решить мое соображение, потому что мне нужно получить 10 лучших заказов в конструкции по умолчанию.

Ответы [ 2 ]

5 голосов
/ 18 августа 2010

Я имею в виду, можно ли применить условие «ГДЕ» в качестве атрибута к @OneToMany или нет?

Не со стандартным JPA. Но у некоторых провайдеров есть расширения для этого. Например, Hibernate имеет аннотацию @Where:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@Where(clause="1=1")
public Set<Ticket> getTickets() {
    return tickets;
}

Ссылки

0 голосов
/ 28 июня 2012

JPA не поддерживает это. Но в EclipseLink вы можете использовать выражение для фильтрации отношений.

См, http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

...