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
|