cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Creating or loading Datamap
Date Fri, 21 Jan 2011 15:36:01 GMT
Actually this is good result - you are getting there. I think you also need to add attributes
for the columns in your table to DbEntity and ObjEntity.

Andrus

On Jan 21, 2011, at 5:09 PM, André Rothe wrote:

> Hm, it doesn't work. I can perform a SQL query, it returns the correct number of records,
but the properties are NULL.
> 
> SelectQuery q = new SelectQuery("Projects");
> List projectsTest = this.context.get("test").performQuery(q);
> 
> for (Object o : projectsTest) {
>    DataObject dObj = (DataObject) o;
>    System.out.println(dObj.readProperty("columnname"));
> }
> 
> I have defined a DataContext "test" as:
> 
> DataMap map = new DataMap(mapName + " map");
> 
> DbEntity entity = new DbEntity("tablename");
> map.addDbEntity(entity);
> 
> DbAttribute attr = new CharacterDbAttribute("columnname", 20, true);
> entity.addAttribute(attr);
> 
> // more attributes here
> // ...
> 
> ObjEntity objEntity = new ObjEntity("Projects");
> objEntity.setDbEntity(entity);
> objEntity.setClassName(CayenneDataObject.class.getName());   // default
> map.addObjEntity(objEntity);
> 
> DataNode node = new DataNode(mapName + " node");
> node.addDataMap(map);
> node.setDataSource(store.getDataSource());
> node.setAdapter(new AutoAdapter(store.getDataSource()));
> 
> DataDomain domain = new DataDomain(mapName + " domain");
> domain.addNode(node);
> domain.addMap(map);
> 
> this.context.put(mapName, domain.createDataContext());
> 
> The class CharacterDbAttribute sets the type to VARCHAR, mandatory and length properties.
The field "store" holds the data sources (instances of PoolManager). mapName = "test".
> 
> I think, I don't need a full-defined ObjectEntity, because it is dynamic. I set only
the class name (default) and the DbEntity instance. So where I have forgotten a call?
> 
> Thanks a lot
> André
> 
> Andrus Adamchik <andrus@objectstyle.org> wrote:
> 
>> 
>> On Jan 21, 2011, at 2:53 PM, André Rothe wrote:
>> 
>>> Should I set the name explicitly to "org.apache.cayenne.CayenneDataObject" (or
subclasses)?
>> 
>> Setting org.apache.cayenne.CayenneDataObject is optional (this is the default). If
you want to use your own subclass, definitely call objEntity.setClassName(MyClass.class.getName()).
>> 
>> Andrus
> 
> 


Mime
View raw message