Java Criteria API Query, чтобы определить, содержит ли объект какие-либо из тех же ролей, что и пользователь (сравнивая два списка)

Template Объект имеет список ролей и виден только этим ролям. Я хочу обновить существующий запрос, чтобы он возвращал только те шаблоны, которые имеют хотя бы одну из тех же ролей, что и предоставленный пользователь, я не уверен, как использовать критерии API по существу написать

SELECT template.* FROM TEMPLATE template
     JOIN TEMPLATE_ROLE_LIST join_table on template.id = join_table.template_id 
WHERE join_table.role_id in (<--List of Role ID's -->);

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

    Session hibernateSession = getHibernateSession();
    User user = hibernateSEssion.getUser();
    List<Roles> rolesList = user.getRoles();
    //Explicitly showing the user and roles objects ^

    CriteriaBuilder criteriaBuilder = hibernate.getCriteriaBuilder();
    CriteriaQuery<Template> criteriaQuery = criteriaBuilder.createQuery(Template.class);
    Root<Template> root = criteriaQuery.from(Template.class);

    //How do I say here `Select Template where Template.roles contains any object in rolesList?
    criteriaQuery.select(root);
    hibernate.createQuery(criteria).list();

    List<Template> Templates = hibernate.createQuery(criteriaQuery).list();

    return templates;

0 ответов

Другие вопросы по тегам