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