隨筆-35  評(píng)論-97  文章-0  trackbacks-0

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

              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);
                  }

              }

          可以得到下面的結(jié)果:

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

           

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

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

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

           

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

          評(píng)論:
          # re: [EMF-Query] 奇怪的模型查詢問題,誰知道是什么原因嗎? 2007-06-13 09:14 | 三告習(xí)習(xí)
          找到原因了,如果要從library里查詢books,Library對(duì)Book的的關(guān)聯(lián)屬性containment要設(shè)定為true。
          還有什么因素影響嗎?再找找看  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 西藏| 赞皇县| 即墨市| 河南省| 葫芦岛市| 田林县| 龙游县| 云梦县| 库尔勒市| 广河县| 永善县| 芦山县| 临湘市| 舞阳县| 普宁市| 鄢陵县| 宝山区| 海淀区| 瓮安县| 图们市| 柳林县| 喜德县| 庆安县| 扶绥县| 辛集市| 黄石市| 额敏县| 辽中县| 武宁县| 吉木萨尔县| 阳山县| 南涧| 高阳县| 南康市| 闽侯县| 东方市| 湖南省| 邳州市| 南投县| 玉门市| 罗山县|