隨筆-35  評論-97  文章-0  trackbacks-0

          EMF-Query的官方例子library中,我要下面測試代碼去跑

              public static void main(String[] args)
              
          {
                  EXTLibraryFactory factory 
          = EXTLibraryFactory.eINSTANCE;
                  Set
          <EObject> subjects = new HashSet<EObject>();  // hypothetical source of test subjects
                  Library library = factory.createLibrary();
                  library.setName(
          "abc library");
                  Writer dickens 
          = factory.createWriter();
                  dickens.setName(
          "abc author");
                  
                  library.getWriters().add(dickens);
                  
                  Book b1 
          = factory.createBook();
                  b1.setTitle(
          "a book");
                  b1.setAuthor(dickens);
                  subjects.add(b1);
                  library.getBooks().add(b1);
                  
          /*
                   * Looking for books whose writer name is the specified name
                   
          */

                  EObjectCondition condition 
          = new EObjectReferenceValueCondition(
                      
          new EObjectTypeRelationCondition(EXTLibraryPackage.eINSTANCE.getBook()),
                      EXTLibraryPackage.eINSTANCE.getBook_Author(),
                      
          new EObjectAttributeValueCondition(EXTLibraryPackage.eINSTANCE
                          .getWriter_Name(), 
          new StringValue(dickens.getName())));

                  
          // Build the select query statement
                  SELECT statement = new SELECT(
                      
          new FROM(library), 
                      
          new WHERE(condition));

                  
          // Execute query
                   IQueryResult r1 = statement.execute();
                   
          for(Object object : r1)
                  
          {
                      System.out.println(object);
                  }

              }

          可以得到下面的結果:

          org.eclipse.emf.examples.extlibrary.impl.BookImpl@c791b9 (publicationDate: null) (copies: 0) (title: a book, pages: 100, category: <unset>)

           

          但是我自己將它的模型簡化后,模型為extlibrary.zip,重新生成模型代碼。再用上面的代碼測試的時候,卻什么結果也沒有。

          不是我故意要簡化這模型來挑這個毛病,其實在其他模型中出現了相似的問題:發覺emf-query查詢條件語句沒有什么錯,但是卻沒有結果。所以想在官方的例子試試。奇怪就是,同樣的測試語句,官方例子中的模型可查得數據,我簡化后(自己建的模型)卻得不到結果。是建模的方法不對?還是要注意一些什么問題?我是在ecore上(如上圖)直接添加EAttribute等方式建立模型的。

          那位大俠幫忙看一下咯,感激~~~~~~~~~~

           

          posted on 2007-06-12 17:26 三告習習 閱讀(512) 評論(1)  編輯  收藏 所屬分類: emf/gef/gmf

          評論:
          # re: [EMF-Query] 奇怪的模型查詢問題,誰知道是什么原因嗎? 2007-06-13 09:14 | 三告習習
          找到原因了,如果要從library里查詢books,Library對Book的的關聯屬性containment要設定為true。
          還有什么因素影響嗎?再找找看  回復  更多評論
            
          主站蜘蛛池模板: 新和县| 巨野县| 大厂| 平安县| 沽源县| 贡嘎县| 遵化市| 横峰县| 大港区| 海城市| 会理县| 肃宁县| 家居| 调兵山市| 铅山县| 宁德市| 榆树市| 锦州市| 司法| 铜梁县| 栖霞市| 临汾市| 社会| 高台县| 永州市| 铜梁县| 沈阳市| 岗巴县| 淄博市| 静海县| 攀枝花市| 辽中县| 洪江市| 任丘市| 普陀区| 淮阳县| 大关县| 都江堰市| 温宿县| 拉萨市| 化德县|