隨筆 - 175  文章 - 202  trackbacks - 0
          <2011年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          第一個Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          目前項(xiàng)目有個需要,就是在所有查詢的參數(shù)中,增加一個屬性。
          自然想到使用 interceptor 將每個 parameter wraper 一下,加上這個屬性
          我就使用 cglib 生成了一個 wrapper class,然后再 proxy 到原來的 parameter 上。

          后來,出了錯誤,找了好長時(shí)間,發(fā)現(xiàn)
          ibatis sql 中寫著 isPrimary,可其實(shí)在 java 里是這樣的

          private boolean isPrimary;
          public boolean isPrimary() {
              return isPrimary;
          }

          其實(shí)屬性名字是 primary 啊,為什么在 wrapper 之前就不出錯呢。

          找了一下,ibatis 是通過他自己的 probe 來獲得屬性值的,這個 probe 不僅會通過方法取值,還會通過 field name 取值,沒訪問權(quán)限的,還會加上權(quán)限。

          就是 ClassInfo 的下面方法


            private void addFields(Class clazz) {

              Field[] fields = clazz.getDeclaredFields();

              for (int i = 0; i < fields.length; i++) {

                Field field = fields[i];

                if (canAccessPrivateMethods()) {

                  try {

                    field.setAccessible(true);

                  } catch (Exception e) {

                    // Ignored. This is only a final precaution, nothing we can do.

                  }

                }

                if (field.isAccessible()) {

                  if (!setMethods.containsKey(field.getName())) {

                    addSetField(field);

                  }

                  if (!getMethods.containsKey(field.getName())) {

                    addGetField(field);

                  }

                }

              }

              if (clazz.getSuperclass() != null) {

                addFields(clazz.getSuperclass());

              }

            }


          解決辦法,將 isPrimary 改成 primary

          posted on 2011-06-01 15:58 哈哈的日子 閱讀(189) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 余江县| 交口县| 柳河县| 射洪县| 马尔康县| 莱州市| 扎兰屯市| 芮城县| 无锡市| 钟祥市| 凯里市| 门源| 濮阳县| 诸城市| 广德县| 舟山市| 南昌县| 乌兰察布市| 德钦县| 信宜市| 崇仁县| 邓州市| 霍州市| 夹江县| 巴林左旗| 区。| 成武县| 布尔津县| 英吉沙县| 遂平县| 德惠市| 南澳县| 兴隆县| 垦利县| 九寨沟县| 融水| 专栏| 平遥县| 松阳县| 葫芦岛市| 湖州市|