記錄開發中的一次神奇的bug(Mybatis的resultMap中collection結果集映射數量與數據庫查詢出的數量不一致的情況)
情況是這樣的:大A在商店下了個單,選了四種五毛錢的零食,每種都只買了一袋,錢付完了結果訂單查詢後顯示它只買了一種五毛錢的零食,然而數據庫中存的是他買了四種。
很明顯,在SQL結果到Java的結果集映射過程出了問題,但是有些訂單又是正常的,如果映射本身有問題,爲啥有些訂單正常呢?
我真的盯着SQL結果看了半個多小時。。。(結果真的太長了),差點放棄了,然後我發現了一個驚天的祕密
在這筆訂單中,一共買了六種商品,但是前臺只顯示了五種;
我猜,因爲這個類並沒有id唯一標識且作爲collection中的oftype,所以當orderGoodItem_quantity和orderGoodeitem_price列的數據重複時[即途中的3-1.5的數據]會被認爲重複而不映射,所以這裏只映射爲了5中,因爲3-1.5重複了一個。