I'd say clone a DataMap (e.g. via XML, although Util.cloneViaSerialization() would likely also work). And then replace Java class for all cloned entities to be CayenneDataObject. This should be MUCH less painful than creating real Java classes on the fly.

Andrus


On Oct 29, 2007, at 10:23 AM, Tore Halset wrote:
Hello.

I am trying to issue a query from the modeler to the projects DataMap and a selected DataSource. I am stumbling and need some help..

Here is my current problematic stack trace from issuing a *data rows* SelectQuery on an entity called "MyEntity".

Caused by: java.lang.ClassNotFoundException: myapp.data.MyEntity
        at java.lang.Class.forName(Class.java:242)
        at org.apache.cayenne.util.Util.getJavaClass(Util.java:570)
        at org.apache.cayenne.map.ObjEntity.getJavaClass(ObjEntity.java:256)
at org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor (PersistentDescriptorFactory.java:50) at org.apache.cayenne.reflect.ClassDescriptorMap.createDescriptor (ClassDescriptorMap.java:128) at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.checkDescripto rInitialized(LazyClassDescriptorDecorator.java:49) at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.getEntity (LazyClassDescriptorDecorator.java:73) at org.apache.cayenne.access.trans.SelectTranslator.appendQueryColumns (SelectTranslator.java:357) at org.apache.cayenne.access.trans.SelectTranslator.buildResultColumns (SelectTranslator.java:332) at org.apache.cayenne.access.trans.SelectTranslator.createSqlString (SelectTranslator.java:107) at org.apache.cayenne.dba.postgres.PostgresSelectTranslator.createSqlStri ng(PostgresSelectTranslator.java:31) at org.apache.cayenne.access.trans.QueryAssembler.createStatement (QueryAssembler.java:95) at org.apache.cayenne.access.jdbc.SelectAction.performAction (SelectAction.java:71) at org.apache.cayenne.access.DataNodeQueryAction.runQuery (DataNodeQueryAction.java:57) at org.apache.cayenne.access.DataNode.performQueries(DataNode.java: 236)

So the problem is that myapp.data.MyEntity does not exist. Is there some smart trick to duplicate the model and make all ObjEntities generic? Or perhaps generate and load the classes in a disposable client class loader?

Regards,
 - Tore.


Reply via email to