1つ前に書いた記事で、「あんた、そりゃ話が上手すぎるよ」と、もう1人の自分がツッコミを入れました。
その、もう1人の自分の言い分は、「Header-Detailがさも出来るように書いてあるけど、どうやってやるんだ!」とのことでした。
確かにそうです。 Header-Detailは、一般的に1:nの関係にあります。 1:1なら、requestMapの方法で良さそう。 じゃぁ、1:nは、どうすれば良いのでしょうか。
SQLライクに考えると、JOINで持ってくるとHeaderもDetailも1つのレコードに入りますから、多い方のDetailの個数分だけレコードが返ってくるわけです。
JOINしなければ、最初にHeader側の1つを取って、その後で外部KEYを使ってDetail側の複数個を取れば良いのです。
2回SQLを投げるなら… requestMapエレメントの子であるresultエレメントに、selectアトリビュートを書くという手があります。 この場合、2回目のSQLは1:nのn側を取ってくるので、その結果はListに詰めてやってきたりします。 良い感じです。
JOINでやる場合は? ていうか、出来るのか? 出来ないような気がする…。
