[EMF-Query] 奇怪的模型查询问题,谁知道是什么原因吗?

[EMF-Query] 奇怪的模型查询问题,谁知道是什么原因吗?

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] 奇怪的模型查询问题,谁知道是什么原因吗?_第1张图片

不是我故意要简化这模型来挑这个毛病,其实在其他模型中出现了相似的问题:发觉emf-query查询条件语句没有什么错,但是却没有结果。所以想在官方的例子试试。奇怪就是,同样的测试语句,官方例子中的模型可查得数据,我简化后(自己建的模型)却得不到结果。是建模的方法不对?还是要注意一些什么问题?我是在ecore上(如上图)直接添加EAttribute等方式建立模型的。

那位大侠帮忙看一下咯,感激~~~~~~~~~~

 



你可能感兴趣的:([EMF-Query] 奇怪的模型查询问题,谁知道是什么原因吗?)