Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > DetachedCriteria. Как написать запрос


Автор: Матильда 18.6.2014, 14:08
Доброго времени суток.

Есть класс User:
Код

public class User {
    private Long id;
    private Set<Role> roles = new HashSet<Role>();
...
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "core_user_role_links", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
    public Set<Role> getRoles() {
        return roles;
    }
    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
...


и есть класс Role:
Код

public class Role {
    private Long id;
    private String name;
...


можно ли с помощью DetachedCriteria написать такой запрос:
Код

SELECT us.*
FROM users us 
JOIN user_role_links rl ON (rl.user_id = us.id)
JOIN roles r ON (rl.role_id = r.id)
WHERE
r.name=?

Автор: Матильда 1.7.2014, 15:45
Сделала так:

Код

        DetachedCriteria crit = DetachedCriteria.forClass(User.class, "u");
        crit.setFetchMode("u.roles", FetchMode.JOIN);
        crit.createAlias("u.roles", "role");
        crit.add(Restrictions.eq("role.name", role.getName()));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)