[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] DynamicClass Name containing a dot
|
The issue is that the alias defaults to the simple class name.
If you use the full packaged name it will get the correct class.
ReadAllQuery query2 = new DynamicHelper(session).newReadAllQuery("p2.type");
or,
ReadAllQuery query2 = new DynamicHelper(session).newReadAllQuery(
type2Builder.getType().getDescriptor().getJavaClass().getName());
or just,
ReadAllQuery query2 = new
ReadAllQuery(type2Builder.getType().getDescriptor().getJavaClass());
You should set the alias on one (or both) or your descriptors to be
different, as having two descriptors with the same alias is a bad idea.
type2Builder.getType().getDescriptor().setAlias("p2.type");
Rohit Banga-2 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();
> }
>
> }
> }
>
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.nabble.com/EclipseLink-f26430.html EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
Performance
--
View this message in context: http://old.nabble.com/DynamicClass-Name-containing-a-dot-tp31387419p31388762.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.