2016-03-02 1 views
0

Я работаю над проектом Java EE, который использует JPA для сохранения данных в базе данных. У меня есть следующие два объекта сохранения (Action and Notification).Lazy part partial resultset или условные результаты

@Entity 
@Table(name="Action") 
public class Action{ 

    @OneToMany(mappedBy="businessAction", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, orphanRemoval=true) 
    private List<Notification> notifications; 

    //***************SOME OTHER STUFF********************** 
} 

@Entity 
@Table(name="Notif") 
public class Notification{ 

    @Column(name="NOTIF_DATE") 
    private Date notifDate;   

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name="FOR_ACTION_ID") 
    private Action action; 

    //***************SOME OTHER STUFF********************** 
} 

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

Может ли кто-нибудь предложить мне лучший способ справиться с этим?

ответ

0

Это звучит как идеальный вариант использования фильтров, если они поддерживаются вашим провайдером JPA.

Например, в Hibernate вы можете просто определить filter в коллекции notifications и включить его по умолчанию для всех Session s в приложении. В зависимости от того, какую структуру вы используете для управления транзакциями, вы можете добавить перехватчик/крючок, который позволяет фильтру при запуске транзакций.

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

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