Как заставить Hibernate ResultTransformer работать с сущностями, имеющими отношения с другими сущностями - PullRequest
1 голос
/ 15 ноября 2011

у меня есть Сотрудник , Роль , Отдел доменов

  • Сотрудник , Роль имеют отношения многие ко многим .
  • Сотрудник , Отдел имеют отношения многие к одному ,

    @ManyToOne(cascade = CascadeType.ALL)
        @JoinColumn(name = "fk_department_id")
        private Department department;
    
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "employee_role", joinColumns = { @JoinColumn(name = "employee_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
    private Set<Role> roles = new HashSet<Role>(0);
    

-Требование: получить всех пользователей с ролью администратора :

так вот что я пытаюсьdo:

List<Employee> employees = getCurrentSession()
                .createSQLQuery(
                        "select"
                                + e.id as id,e.first_name as firstName,e.password as password
                                + "from employee e,employee_role er,role r where e.employee_id=er.employee_id and er.role_id=r.role_id and r.name='ROLE_ADMIN' ")
                .setResultTransformer(Transformers.aliasToBean(Employee.class))
                .list();

Проблема : я могу легко получить все свойства, как в запросе выше, за исключением свойства Department (в таблице сотрудников есть столбец fk_department_id)и свойство role (есть таблица соединения employee_role), любые идеи как их получить с помощью запроса и установить их в bean-компоненте с помощью ResultTransFormer или мне придется делать это в отдельных запросах и устанавливать каждое свойство отдельно?

...