データベースからユーザーとデバイスの2つのテーブル名に関連するデータを返すクエリを実行しようとしています.次の方法でmybatisを使用しました:
<resultMap id="userMap" type="com.motilink.server.User">
<result property="company" column="USER_COMPANY" />
</resultMap>
<resultMap id="deviceMap" type="com.motilink.server.Device">
<result property="deviceId" column="DEVICE_ID" />
<result property="userId" column="USER_ID" />
</resultMap>
<select id="selectDeviceUser" resultMap="userMap,deviceMap">
select device.deviceId
as DEVICE_ID,
user.company
USER_COMPANY,
device.userId as USER_ID from
device,user where user.id =
device.userId
</select>
java からオブジェクト値にアクセスしようとすると、最初に配置された resultMap (userMap) の値しか取得できません。私が間違っていることを教えてください。
結果マップにアクセスするコード:
SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory()
.openSession();
List<User> urs = (List<User>) session.selectList("selectDeviceUser",
null);
for (User u : urs) {
System.out.println("Company: " + u.getCompany());
}
// List<Device> devices = (List<Device>) session.selectList(
// "selectDeviceUser", null);
// for (Device d : devices) {
// System.out.println("Device ID: " + d.getDeviceId());
// }