次のテーブルがあります。
USER
ID VARCHAR(32) INTEGER NOT NULL
ROLE
ID INTEGER NOT NULL
USERROLE /*Many to Many*/
USER_ID VARCHAR(32) NOT NULL
ROLE_ID INTEGER NOT NULL
注釈を使用して、DB テーブルをクラスにマップしています。
/* Mapping for USER table */
@Entity
@Table (name="USER")
public class User{
@Id
@Column (name="ID")
private String id;
@ManyToMany
@JoinTable (name="USERROLE", joinColumns = {@JoinColumn (name="USER_ID")},
inverseJoinColumns = {@JoinColumn (name="ROLE_ID")})
@LazyCollection (LazyCollectionOption.FALSE)
private List<Role> roles;
}
/* Mapping for ROLE table */
@Entity
@Table (name="ROLE")
public class Role {
@Id
@Column (name="ID")
private int id;
}
ここで、ROLE テーブルと USERROLE テーブルを結合するクエリを実行して、ユーザーが割り当てられている ROLE を取得できるようにしたいと考えています。
- 編集
Role.id があり、この Role が USERROLE テーブルで参照されているかどうかを確認したい。ネイティブ SQL では、次のようにします。
SELECT DISTINCT A.* from ROLE A INNER JOIN USERROLE B
WHERE A.ID = B.ROLE_ID AND A.ID = ?;
HibernateTemplate を使用して休止状態で行う方法は?