как сделать весенний фильтр в oneToMany - PullRequest
0 голосов
/ 06 октября 2018

У меня есть объект с коллекцией комментариев.Теперь я хочу добавить поле «личное» к нему.Комментарии с private = true не должны быть включены без явного запроса.Очевидно, я могу просто создать dto, который фильтрует сущности.Можно ли добавить на модель фильтр, который можно условно включить или выключить?

1 Ответ

0 голосов
/ 06 октября 2018

Да, вы можете определить фильтр для модели:

@Entity
@Table(name="comments")
@FilterDef(name="commentFilter", parameters={
    @ParamDef(name="private", type="boolean")
})
@Filters({
    @Filter(name="commentFilter", condition=":private=isprivate")
})
public class Comments {
    @Id
    @Column(name="id")
    private Integer id;
    @Column(name="private")
    private boolean private;
    ...

и для запроса

Session session = HibernateUtil.getSessionFactory().openSession();
        System.out.println("--Enable Filter--");
        Filter filter = session.enableFilter("commentFilter");
        filter.setParameter("private",true);
        session.beginTransaction();
        List<Comments> results = session.createQuery("from Comments").list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...