私は従業員、役割、部門のドメインを持っています
- 従業員、役割には多対多の関係があります。
従業員、部門は多対1の関係を持っています。
@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);
-要件:ロールadminを持つすべてのユーザーを取得します:
これが私がやろうとしていることです:
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プロパティ(employeeテーブルに列fk_department_idがあります)とrolesプロパティ(結合テーブルemployee_roleがあります)を除いて、上記のクエリのようにすべてのプロパティを簡単に取得できます。ResultTransFormerを使用してBean内でそれらを実行するか、個別のクエリでそれを実行し、各プロパティを個別に設定する必要がありますか?