menu menu_autorization authorization
---------- ----------------------- -----------------------
|id|title| |id|menu|authorization| |id|authorization|info|
---------- ----------------------- -----------------------
| | | |
|---------------------| |----------------|
我用Hibernate映射了这个数据库;当我从数据库中获得菜单对象时,我也可以正确地获得 menu_autorization 和授权对象。
对于每个菜单对象,我有很多 menu_autorization 对象。
到目前为止我写的查询让我获得了DB中的所有菜单对象;我想要做的是写一个查询,让我得到一个具有特定 menu_autorization 的菜单对象。
我怎么能这样做,因为我没有菜单中的授权字段? 也许我可以使用Criteria来做,但我不知道如何。
我在Menu.class中有这个映射
...
@OneToMany(mappedBy="menu", fetch=FetchType.EAGER)
private Set<MenuAuthorization> menuAuthorization;
...
MenuAuthorization.class中的这个映射
...
@ManyToOne(targetEntity=Menu.class)
@JoinColumn(name="menu",referencedColumnName="id")
private Menu menu;
@ManyToOne(targetEntity=Authorizazion.class)
@JoinColumn(name="authorizazion",referencedColumnName="id")
private Authorizazion authorizazion;
....
,这在Authorization.class
中...
@OneToMany(mappedBy="Authorization", fetch=FetchType.EAGER)
private Set<MenuAuthorization> MenuAuthorization;
...
答案 0 :(得分:3)
你可以使用JPQL这样做
select m from Menu m join m.menuAuthorization ma where ma.id = :maId
使用Criteria API,你可以这样做
Criteria criteria = session.createCriteria(Menu.class)
criteria.createAlias("menuAuthorization", "ma");
criteria.add(Restrictions.eq("ma.id", maId));
Menu menu = (Menu)criteria.uniqueResult();