Ah! Next problem.
Having found the datanode with:
DataDomain dataDomain =
runtime.getInjector().getInstance(DataDomain.class);
DataNode dataNode = dataDomain.getNode("datanode");
...
dataNode.addDataMap(dataMap);
I now get the following in the log:
20:15:15,961 [CommonsJdbcEventLogger main INFO ] +++ Connecting:
SUCCESS.
20:15:16,071 [CommonsJdbcEventLogger main INFO ] Detected and installed
adapter: org.apache.cayenne.dba.hsqldb.HSQLDBAdapter
20:15:16,075 [CommonsJdbcEventLogger main INFO ] --- transaction
started.
20:15:16,123 [CreateIfNoSchemaStrategy main INFO ] No schema detected,
will create mapped tables
20:15:16,130 [CommonsJdbcEventLogger main INFO ] CREATE CACHED TABLE
SimpleClassA (number INTEGER NULL, persistent INTEGER NULL)
20:15:16,253 [CommonsJdbcEventLogger main INFO ] CREATE TABLE
AUTO_PK_SUPPORT ( TABLE_NAME CHAR(100) NOT NULL, NEXT_ID BIGINT NOT NULL,
PRIMARY KEY(TABLE_NAME))
20:15:16,254 [CommonsJdbcEventLogger main INFO ] DELETE FROM
AUTO_PK_SUPPORT WHERE TABLE_NAME IN ()
20:15:16,258 [CommonsJdbcEventLogger main INFO ] *** error.
java.sql.SQLException: Unexpected token: ) in statement [DELETE FROM
AUTO_PK_SUPPORT WHERE TABLE_NAME IN ()]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
at
org.apache.cayenne.access.DbGenerator.safeExecute(DbGenerator.java:377)
at
org.apache.cayenne.access.DbGenerator.runGenerator(DbGenerator.java:355)
at
org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy.generate(CreateIfNoSchemaStrategy.java:79)
....
....
20:15:16,287 [CommonsJdbcEventLogger main INFO ] INSERT INTO
SimpleClassA (number, persistent) VALUES (?, ?)
20:15:16,290 [CommonsJdbcEventLogger main INFO ] [bind: 1->number:NULL,
2->persistent:NULL]
20:15:16,292 [CommonsJdbcEventLogger main INFO ] === updated 1 row.
20:17:32,778 [CommonsJdbcEventLogger main INFO ] --- transaction
started.
20:17:32,779 [CommonsJdbcEventLogger main INFO ] INSERT INTO
SimpleClassA (number, persistent) VALUES (?, ?)
20:17:32,779 [CommonsJdbcEventLogger main INFO ] [bind: 1->number:NULL,
2->persistent:NULL]
20:17:32,780 [CommonsJdbcEventLogger main INFO ] === updated 1 row.
20:17:32,780 [CommonsJdbcEventLogger main INFO ] [bind: 1->number:NULL,
2->persistent:NULL]
20:17:32,780 [CommonsJdbcEventLogger main INFO ] === updated 1 row.
Followed by "Temporary ID hasn't been replaced on commit: "
Any hints?
On 12 Dec 2011 at 12:02, Mike Kienenberger wrote:
> How are you creating a DataNode and what are you doing to assign DataMaps to
> it?
>
> On Mon, Dec 12, 2011 at 11:52 AM, Kevin Meyer - KMZ <[email protected]> wrote:
> > Ok, thanks, I call
> > objAttribute.setDbAttributePath(id);
> > and I am now back to my previous problem, where
> > DataNode node =
> > parent.getDomain().lookupDataNode(entity.getDataMap());
> > has node == null in DataDomainInsertBucket#createPermIds.
> >
> > Any hints?
> >
> > On 12 Dec 2011 at 11:13, Mike Kienenberger wrote:
> >
> >> You may not need the prefix, but you at least need this much:
> >>
> >> // dot-separated path that starts in the root DbEntity
> >> that maps to this attribute's ObjEntity and spans zero or more
> >> relationships, always ending in a DbAttribute name.
> >> objAttribute.setDbAttributePath(id);
> >>
> >> On Mon, Dec 12, 2011 at 11:10 AM, Kevin Meyer - KMZ <[email protected]>
> >> wrote:
> >> > Sorry, you guys are confusing me.
> >> >
> >> > I have a datamap (called "isis_map"), to which I have added a DbEntity
> >> > (named after my class, "simpleclass") and a ObjEntity (with same
> >> > name).
> >> >
> >> > The "id" I refer to is the name of a property of my class (called
> >> > "number"). The class has methods setNumber and getNumber.
> >> >
> >> > That's the id ("number") that I assigned to DbAttribute and
> >> > ObjAttribute.
> >> >
> >> > What is the prefix you refer to?
> >> >
> >> > regards,
> >> > Kevin
> >> >
> >> > On 12 Dec 2011 at 9:20, John Huss wrote:
> >> >
> >> >> Yes, you need to link the Obj* things to the Db* things by name, both
> >> >> the
> >> >> entities and the attributes.
> >> >>
> >> >> On Mon, Dec 12, 2011 at 9:03 AM, Mike Kienenberger
> >> >> <[email protected]>wrote:
> >> >>
> >> >> > I can't remember the exact details, but you might need (prefix + "." +
> >> >> > id) instead of (id)
> >> >> >
> >> >> > On Mon, Dec 12, 2011 at 2:50 AM, Kevin Meyer - KMZ <[email protected]>
> >> >> > wrote:
> >> >> > > DbAttribute dbAttribute = new DbAttribute(id,
> >> >> > java.sql.Types.INTEGER, dbEntity);
> >> >> > > dbEntity.addAttribute(dbAttribute);
> >> >> >
> >> >> > + // dot-separated path that starts in the root DbEntity
> >> >> > that maps to this attribute's ObjEntity and spans zero or more
> >> >> > relationships, always ending in a DbAttribute name.
> >> >> > + objAttribute.setDbAttributePath(id);
> >> >> >
> >> >> > >
> >> >> > > ObjAttribute objAttribute = new ObjAttribute(id, type,
> >> >> > objEntity);
> >> >> >
> >> >>
> >> >
> >> >
> >> > --
> >> > Kevin Meyer, PhD, Pr.Sci.Nat
> >> > KMZ P.O. Box 9822, Sharon Park, South Africa.
> >> > Tel: +27 11 363 2001 Cell: +27 83 346 3045
> >> >
> >> >
> >
> >
> > --
> > Kevin Meyer, PhD, Pr.Sci.Nat
> > KMZ P.O. Box 9822, Sharon Park, South Africa.
> > Tel: +27 11 363 2001 Cell: +27 83 346 3045
> >
> >
--
Kevin Meyer, PhD, Pr.Sci.Nat
KMZ P.O. Box 9822, Sharon Park, South Africa.
Tel: +27 11 363 2001 Cell: +27 83 346 3045