Hibernate双向多对多查询方法

文件:MachineInfo.java  对应  MachineInfo.hbm.xml

public class MachineInfo implements Serializable{
    private Integer id;
    private String machine_id;
    private String machine_name;
    private Date machine_makedate;
    
    private Set deviceusers = new HashSet();
}



	
		
		
			
			
		
		
		
			
		
		
			
		
		
		
			
		
		
		
			
			
		
		
	



文件:DeviceUser.java   对应   DeviceUser.hbm.xml

public class DeviceUser implements Serializable{
	private Integer id;	
	private String name;
	private String sex;
	private Integer age;
	private String phone;
	private String job;
	private String desc;
	
	private Set machinelists = new HashSet();
}



	
	
		
			
			
		
		
		
			
		
		
		
			
		
		
		
			
		

		
			
		
		
		
			
		
		
		
			
		
		
		
			
			
		
		
	

生成的表有3个,不过查询和表名无关,就不列出表了

下一步,查询一,通过用户名 查询他所管理的设备列表,

String hql2="SELECT m from MachineInfo as m join m.deviceusers r WHERE r.name='de7'";
        
        Query query = session.createQuery(hql2);
        
        List list = query.list();
        for (MachineInfo deviceUser : list) {
            System.out.println(deviceUser.getMachine_id());
        }
返回结果可返回所有该用户名下的设备


查询二,通过设备查询所有使用该设备的人

String hql="SELECT p from DeviceUser as p join p.machinelists r WHERE r.machine_id='111'";
        
        Query query = session.createQuery(hql);
        
        List list = query.list();
        for (DeviceUser deviceUser : list) {
            System.out.println(deviceUser.getname());
        }



你可能感兴趣的:(Hibernate)