文件: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());
}