Hi John,

maybe try allowing nulls for the parentAttributeId and using an Integer instead of an int. Use null as its default value. I think that that should work.

Best regards,

Geert

On 17 Jul 2006, at 23:27, John Troxel wrote:


I have a "hierarchical" table where records can optionally be associated with a parent record. I would like to make sure that, IF the foreign key is set, it refers to a valid record. And I might want to use CRUD. I have the following in activateMetaData:

  addConstraint(new ConstrainedBean()
    .associations(DynamicAttribute.class));
addConstraint(new ConstrainedProperty ("parentAttributeId").manyToOne(
    DynamicAttribute.class, "id", CreateTable.NOACTION,
    CreateTable.CASCADE).notNull(false).notEmpty(false));
If I try to save without setting the parentAttributeId, I get:

1) testSaveAttr(com.tx.app.TestDynamicAttrManager) com.uwyn.rife.database.exceptions.ExecutionErrorException: Error while executing the SQL 'INSERT INTO dynamicattribute (createdDatetime, label, parentAttributeId, value) VALUES (?, ?, ?, ?)'. at com.uwyn.rife.database.DbPreparedStatement.executeUpdate (DbPreparedStatement.java:236) at com.uwyn.rife.database.querymanagers.generic.databasedrivers.org_apach e_derby_jdbc_EmbeddedDriver$1.performUpdate (org_apache_derby_jdbc_EmbeddedDriver.java:103) at com.uwyn.rife.database.DbQueryManager.executeUpdate (DbQueryManager.java:259) at com.uwyn.rife.database.querymanagers.generic.databasedrivers.org_apach e_derby_jdbc_EmbeddedDriver._insertWithoutCallbacks (org_apache_derby_jdbc_EmbeddedDriver.java:88) at com.uwyn.rife.database.querymanagers.generic.AbstractGenericQueryManag er$3.useTransaction(AbstractGenericQueryManager.java:507) at com.uwyn.rife.database.querymanagers.generic.AbstractGenericQueryManag er$3.useTransaction(AbstractGenericQueryManager.java:418) at com.uwyn.rife.database.DbQueryManager.inTransaction (DbQueryManager.java:2783) at com.uwyn.rife.database.querymanagers.generic.AbstractGenericQueryManag er._save(AbstractGenericQueryManager.java:417) at com.uwyn.rife.database.querymanagers.generic.databasedrivers.generic.s ave(generic.java:117) at com.uwyn.rife.database.querymanagers.generic.GenericQueryManagerDelega te.save(GenericQueryManagerDelegate.java:93) at com.uwyn.rife.cmf.dam.ContentQueryManager.access$001 (ContentQueryManager.java:78) at com.uwyn.rife.cmf.dam.ContentQueryManager$1.useTransaction (ContentQueryManager.java:471) at com.uwyn.rife.cmf.dam.ContentQueryManager$1.useTransaction (ContentQueryManager.java:396) at com.uwyn.rife.database.DbQueryManager.inTransaction (DbQueryManager.java:2783) at com.uwyn.rife.cmf.dam.ContentQueryManager.save (ContentQueryManager.java:395) at com.tx.rife.db.PersistenceMangerRifeImpl.save (PersistenceMangerRifeImpl.java:124) at com.tx.app.task.DynamicAttributeManager.saveAttribute (DynamicAttributeManager.java:47) at com.tx.app.TestDynamicAttrManager.testSaveAttr (TestDynamicAttrManager.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at com.uwyn.rife.test.RunWithEngineClassLoader.main (RunWithEngineClassLoader.java:44) Caused by: SQL Exception: INSERT on table 'DYNAMICATTRIBUTE' caused a violation of foreign key constraint 'SQL060717115304291' for key (0). The statement has been rolled back. at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException( Unknown Source) at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException (Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.handleException (Unknown Source) at org.apache.derby.impl.jdbc.ConnectionChild.handleException (Unknown Source) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement (Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement (Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate (Unknown Source) at com.uwyn.rife.database.DbPreparedStatement.executeUpdate (DbPreparedStatement.java:228)
... 37 more

Any ideas would be great.

 - JT
_______________________________________________
Rife-users mailing list
[email protected]
http://lists.uwyn.com/mailman/listinfo/rife-users

--
Geert Bevin
Uwyn "Use what you need" - http://uwyn.com
RIFE Java application framework - http://rifers.org
Music and words - http://gbevin.com


_______________________________________________
Rife-users mailing list
[email protected]
http://lists.uwyn.com/mailman/listinfo/rife-users

Reply via email to