Hibernate双向多对多查询方法

来源:互联网 发布:淘宝原单男包店铺推荐 编辑:程序博客网 时间:2024/05/29 09:23

文件: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<DeviceUser> deviceusers = new HashSet<DeviceUser>();}


<hibernate-mapping package="COM"><class name="MachineInfo" table="machineinfo_table"><id name="id" type="java.lang.Integer"><column name="Machine_Id" /><generator class="identity" /></id><property name="machine_id" type="java.lang.String"><column name="MachineId" /></property><property name="machine_name" type="java.lang.String"><column name="machine_name" /></property><property name="machine_makedate" type="date"><column name="Machine_Makedate" /></property><set name="deviceusers" table="deviceusers_machine"><key column="Machine_Id" /><many-to-many class="DeviceUser" column="User_Id" /></set></class></hibernate-mapping>



文件: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<MachineInfo> machinelists = new HashSet<MachineInfo>();}

<hibernate-mapping package="COM"><class name="DeviceUser" table="deviceusers_table"><id name="id" type="java.lang.Integer"><column name="User_Id" /><generator class="identity" /></id><property name="name" type="java.lang.String"><column name="User_Name" /></property><property name="sex" type="java.lang.String"><column name="User_Sex" /></property><property name="age" type="java.lang.Integer"><column name="User_Age" /></property><property name="phone" type="java.lang.String"><column name="User_Phone" /></property><property name="job" type="java.lang.String"><column name="User_Job" /></property><property name="desc" type="java.lang.String"><column name="User_Desc" /></property><set name="machinelists" table="deviceusers_machine"><key column="User_Id" /><many-to-many class="MachineInfo" column="Machine_Id" /></set></class></hibernate-mapping>

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

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

String hql2="SELECT m from MachineInfo as m join m.deviceusers r WHERE r.name='de7'";                Query query = session.createQuery(hql2);                List<MachineInfo> 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<DeviceUser > list = query.list();        for (DeviceUser deviceUser : list) {            System.out.println(deviceUser.getname());        }



0 0
原创粉丝点击