前幾天項(xiàng)目用到Map,接著調(diào)用Map.entrySet(),結(jié)果產(chǎn)生了一些意外的后果.
就是,持久化數(shù)據(jù)數(shù)據(jù)的時(shí)候出現(xiàn)setter of com.hiber.Hibernate.Test.id 異常.
此異常是提醒,pojo里面未有屬性的getter.
因?yàn)槲以谄渌椒ɡ锩姹4孢^(guò),未曾出現(xiàn)異常,覺(jué)得甚是奇怪.后來(lái)發(fā)現(xiàn),原來(lái)是Map.entrySet()搞的鬼,根據(jù)java api.
返回此映射中包含的映射關(guān)系的 set 視圖。返回的 set 中的每個(gè)元素都是一個(gè) Map.Entry。該 set 受映射支持,所以對(duì)映射的改變可在此 set 中反映出來(lái),反之亦然。如果修改映射的同時(shí)正在對(duì)該 set 進(jìn)行迭代(除了通過(guò)迭代器自己的 remove 操作,或者通過(guò)在迭代器返回的映射項(xiàng)上執(zhí)行 setValue 操作外),則迭代結(jié)果是不明確的。set 支持通過(guò) Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作實(shí)現(xiàn)元素移除,即從映射中移除相應(yīng)的映射關(guān)系。它不支持 add 或 addAll 操作。
為此,我寫了一個(gè)測(cè)試代碼.
代碼 |