Thanks James for the clarification. I missed the fact that I was using the alias.
Instead of getAlias() I should use getJavaClassName().
Better still I will consider having different type names across the packages.
Thanks
Rohit
On 4/13/2011 8:18 PM, James Sutherland wrote: 
 
Hi All
 
When we create a DynamicClass using 
DynamicClassLoader.createDynamicClass(className), then how is the class 
name expected to be interpreted if it contains a dot character.
Lets say if the className be "p.c".
Is "p" treated as the package and "c" as the class within the package?
 
The attached program throws the following exception:
 
Exception [EclipseLink-51000] (Eclipse Persistence Services - 
2.3.0.v20110324-r9156):
org.eclipse.persistence.exceptions.DynamicException
Exception Description: Invalid DynamicEntity[DynamicEntityType(type) - 
RelationalDescriptor(p1.type --> [DatabaseTable(addrinfo)])] property 
name: addrline2
     at 
org.eclipse.persistence.exceptions.DynamicException.invalidPropertyName(DynamicException.java:66)
     at 
org.eclipse.persistence.internal.dynamic.DynamicEntityImpl.get(DynamicEntityImpl.java:145)
     at jpatest.UniqueTypeName.main(UniqueTypeName.java:79)
 
Ideally I would expect p1.type and p2.type to be treated as separated 
classes. Is the above behavior expected or is it a bug in Eclipselink?
 
-- 
Thanks and Regards
Rohit Banga
Member Technical Staff
Oracle Server Technologies
 
import java.util.List;
import java.util.Vector;
 
import org.eclipse.persistence.dynamic.DynamicClassLoader;
import org.eclipse.persistence.dynamic.DynamicEntity;
import org.eclipse.persistence.dynamic.DynamicHelper;
import org.eclipse.persistence.dynamic.DynamicTypeBuilder;
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
import org.eclipse.persistence.jpa.dynamic.JPADynamicTypeBuilder;
import org.eclipse.persistence.queries.ReadAllQuery;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.DatabaseRecord;
import org.eclipse.persistence.sessions.DatabaseSession;
 
public class UniqueTypeName
{  public static void main(String[] args)
  {         DatabaseLogin login = new DatabaseLogin();
         login.setUserName("*****");         login.setPassword("*****");         login.setDriverURLHeader("jdbc:oracle:thin:@");         login.setDriverClassName("oracle.jdbc.OracleDriver");         login.setDatabaseURL("***************");
         DatabaseSession session = new DatabaseSessionImpl(login);
 
         session.login();
 
         DynamicHelper helper = new DynamicHelper(session);
         DynamicClassLoader dcl = helper.getDynamicClassLoader();
 
         Class<?> type1 = dcl.createDynamicClass("p1.type");         Class<?> type2 = dcl.createDynamicClass("p2.type"); 
         DynamicTypeBuilder type1Builder = new JPADynamicTypeBuilder(type1, null,
"addrinfo");
 
         DynamicTypeBuilder type2Builder = new JPADynamicTypeBuilder(type2, null,
"addrinfo");
 
         type1Builder.setPrimaryKeyFields("addrid");         type1Builder.addDirectMapping("addrid", String.class, "addrid");         type1Builder.addDirectMapping("addrline1", String.class, "addr1"); 
         type2Builder.setPrimaryKeyFields("addrid");
         type2Builder.addDirectMapping("addrid", String.class, "addrid");         type2Builder.addDirectMapping("addrline1", String.class, "addr1");         type2Builder.addDirectMapping("addrline2", String.class, "addr2"); 
         helper.addTypes(false, true, type2Builder.getType(),
type1Builder.getType());
 
         ReadAllQuery query = new DynamicHelper(session).newReadAllQuery(
                         type1Builder.getType().getDescriptor().getAlias());
         
         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(entity.get("addrid"));                 System.out.println(entity.get("addrline1"));                 System.out.println();
         }
 
         ReadAllQuery query1 = new DynamicHelper(session).newReadAllQuery(
                         type2Builder.getType().getDescriptor().getAlias());
 
         query1.prepareCall(session, new DatabaseRecord());
         System.out.println("query: " + query1.getSQLString()); 
         emps = (List<DynamicEntity>) session.executeQuery(query1);
         for (DynamicEntity entity : emps)
         {                 System.out.println(entity.get("addrid"));                 System.out.println(entity.get("addrline1"));
                 System.out.println(entity.get("addrline2"));                 System.out.println();
         }
 
  }
}