編集: 簡単に言えば、動的な列を pojo のマップにグループ化したいのです。
ibatis を使用して pojo のリストを読みたいのですが、pojo には、読まなければならないマップが含まれています。
public class FundraiserSuccessData {
private String regionName;
private String fundraiserName;
// Key: Attendance ID, Value: Count
private Map<Integer, Integer> attendanceCount;
...
}
現在、私は出席タイプを読み取り、タイプをリストとしてibatisクエリのパラメーターに入れます。
<select id="fundraiserSuccessReport.search" resultClass="controller.report.fundraiserSuccess.FundraiserSuccessData" parameterClass="controller.report.fundraiserSuccess.SearchRequest">
SELECT VALUE(MAX(r.name), 'D2D') regionName,
MAX(fr.firstname) || ' ' || MAX(fr.lastname) AS fundraiserName,
<iterate property="attendanceTypes" conjunction=","> MAX(attendance.$attendanceTypes[]$) $attendanceTypes[]$ </iterate>
...
JOIN (SELECT dps.person_id,
<iterate property="attendanceTypes" conjunction=",">
SUM(CASE WHEN attendance_id = $attendanceTypes[].id$ THEN 1 ELSE 0 END) $attendanceTypes[].name$
</iterate>
FROM daily_person_state dps
GROUP BY dps.person_id) attendance
ON fr.id = attendance.person_id
...
</select>
しかし、どうすれば参加をattendanceCountにマップできますか? javaにプロパティを動的に追加できないからです。