Hi All 
     
    I am trying to fetch a specific set of attributes using Eclipselink
    fetchgroups. 
    To invoke the program I use the following command: 
     
    java -cp "%CLASSPATH%" -javaagent:<path of
        eclipselink.jar> <class name> 
     
    The SQL query generated is 
     
      SELECT id, firstname from empinfo; 
     
    which is correct. 
     
    However for each iteration of the loop, an extra SQL query is made.
    Am I missing anything here? 
     
     
    Here is the code I am using: 
     
     
                DatabaseSession session = new
        DatabaseSessionImpl(login); 
         
               
          session.setProperty(PersistenceUnitProperties.WEAVING,
          "true"); 
                 
          session.setProperty(PersistenceUnitProperties.WEAVING_FETCHGROUPS,
          "true"); 
                  session.login(); 
         
                DynamicHelper helper = new DynamicHelper(session); 
                DynamicClassLoader dcl = helper.getDynamicClassLoader(); 
         
                Class<?> empType =
        dcl.createDynamicClass("jpatest.empinfo"); 
                DynamicTypeBuilder typeBuilder = new
        JPADynamicTypeBuilder(empType, null, "empinfo"); 
                typeBuilder.setPrimaryKeyFields("id"); 
                typeBuilder.addDirectMapping("id", int.class, "id"); 
                typeBuilder.addDirectMapping("firstname", String.class,
        "firstname"); 
                typeBuilder.addDirectMapping("lastname", String.class,
        "lastname"); 
         
                helper.addTypes(false, false, typeBuilder.getType()); 
         
                ReadAllQuery query = new
DynamicHelper(session).newReadAllQuery(typeBuilder.getType().getDescriptor().getAlias()); 
                FetchGroup fg = new FetchGroup(); 
                  fg.addAttribute("id"); 
                  fg.addAttribute("firstname"); 
                  query.setFetchGroup(fg); 
         
                query.prepareCall(session, new DatabaseRecord()); 
         
                System.out.println("query: " + query.getSQLString()); 
         
                List<DynamicEntity> emps =
        (List<DynamicEntity>) session.executeQuery(query); 
         
                for (DynamicEntity entity : emps) 
                { 
                    System.out.println("id:" + entity.get("id")); 
                    System.out.println("lastname:" +
        entity.get("lastname")); 
                    System.out.println(); 
                } 
     
     
    --  
      Thanks and Regards
       
      Rohit Banga
       
      Member Technical Staff
       
      Oracle Server Technologies
       
     
  
 |