随笔-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 三告习习 阅读(496) 评论(1)  编辑  收藏 所属分类: emf/gef/gmf

评论:
# re: [EMF-Query] 奇怪的模型查询问题,谁知道是什么原因吗? 2007-06-13 09:14 | 三告习习
找到原因了,如果要从library里查询books,Library对Book的的关联属性containment要设定为true。
还有什么因素影响吗?再找找看  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: