2017-01-19 1 views
-1

많은 매핑을 여기에서 사용하고 있습니다. POJO 클래스가 많이 있습니다.many to many 매핑에 대한 Hibernate 쿼리

Menu.java :

@Entity 
@Table(name = "menu") 
public class Menu { 

    @Id 
    @Column(name = "menuid") 
    @GeneratedValue 
    private int menuid; 

    @Column(name = "parentid") 
    private int parentid; 

    @Column(name = "menuname") 
    private String menuname; 

    @Column(name = "url") 
    private String url; 

    @Column(name = "status") 
    private String status; 

    @Column(name = "usertype") 
    private String usertype; 

    @Column(name = "isparent") 
    private boolean isParent; 
    private ArrayList<Menu> childMenu; 

    @ManyToMany(mappedBy="menus")          
    private List<User> users; 

    public Menu(Integer menuid){ 
     this.menuid=menuid; 
    } 

    public Menu(){ 
    } 

User.java :

@Entity 
@Table(name = "user") 
public class User implements Serializable { 

    @Id 
    @Column(name = "userid") 
    @GeneratedValue 
    private Integer userId; 

    @Column(name = "OUTLET_ID") 
    private int outletId; 

    @Column(name = "NAME") 
    private String name; 

    @Column(name = "USERTYPE") 
    private String userType; 

    @Column(name = "LOGINID") 
    private String loginId; 

    @Column(name = "PASSWORD") 
    private String password; 

    @Column(name = "CREATEDDATE") 
    private String createdDate; 

    @Column(name = "CONTACTNUMBER") 
    private String contactNumber; 

    @Column(name = "EMAILID") 
    private String emailId; 

    @Column(name = "OUTLETTYPE") 
    private String outlettype; 

    @Transient 
    private String nsec; 

    @javax.persistence.Transient 
    ArrayList<Integer> menuid; 

    @javax.persistence.Transient 
    ArrayList<Long> clientid; 

    @javax.persistence.Transient 
    ArrayList<String> clientName; 

    @ManyToMany(fetch=FetchType.EAGER) @JsonIgnore 
    @JoinTable(name="user_menu",joinColumns={@JoinColumn(name="userid")}, 
                inverseJoinColumns={@JoinColumn(name="menuid")}) 
    public List<Menu> menus; 

    @ManyToMany(fetch=FetchType.EAGER) @JsonIgnore 
    @JoinTable(name="user_client",joinColumns={@JoinColumn(name="userid")}, 
                inverseJoinColumns={@JoinColumn(name="outletid")}) 

    public List<Client> clients; 

    public User() { 
    } 

I이 사용자가 자동으로 만들어집니다 메뉴와 세 번째 매핑 테이블 user_menu, 나는 성공적으로 화재 쿼리를 다음과 같은 경우에 발생할 수 mysql

select * from menu m inner join user_menu um on m.menuid = um.menuid where um.userid = 41; 

최대 절전 모드에서이 쿼리를 작성하고 싶습니다. 이 물건 ??? 마지막으로 내 대답을 찾을

+0

은이 링크 -> http://stackoverflow.com/questions/13412112/inner-join-using-hql –

+0

감사를 보았다, 내 HQL 질의입니다 Riya 귀하의 참조는 나를 위해 유용합니다. –

답변

0

, 여기

String sql = "select m.menuid as menuid,m.parentid as parentid,m.menuname as menuname,m.url as url,m.status as status,m.usertype as usertype,m.isParent as isParent,m.childMenu as childMenu from Menu m join m.users u where u.userId = "+userid +""; 
    q = session.createQuery(sql).setResultTransformer(Transformers.aliasToBean(Menu.class));