Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] How to use Fetchgroups

Oops!
there is a typo in the sample code that I sent (not the one that I am executing).
The following line in the for loop

System.out.println("lastname:" + entity.get("lastname"))

should be replaced by

System.out.println("firstname:" + entity.get("firstname"))



This is doing an extra query for each entity.


On 1/12/2011 7:14 PM, Rohit Banga wrote:
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
_______________________________________________ eclipselink-users mailing list eclipselink-users@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/eclipselink-users

--
Thanks and Regards
Rohit Banga
Member Technical Staff
Oracle Server Technologies

Back to the top