Could you please open a jira issue for this ? Thanks,
Thomas "Manaster, Carl" <[EMAIL PROTECTED]> schrieb am 10.04.2008 17:55:22: > Hi, all, > > Here's an updated test case that eliminates the criteria re-use issue > and demonstrates that the delete has the desired behavior when no join > is used. > > Peace, > --Carl > > package com.activx.apps.ms.quan.util.tests; > > import org.apache.torque.TorqueException; > import org.apache.torque.util.CountHelper; > import org.apache.torque.util.Criteria; > > import com.activx.lims.tests.TorqueTestCase; > import com.activx.om.T1Peer; > import com.activx.om.T2; > import com.activx.om.T2Peer; > > /** > * create table t1 (t1_id bigint(20) not null auto_increment, primary > key (t1_id)); > * create table t2 (t2_id bigint(20) not null auto_increment, t1_id > bigint(20) not null, primary key (t2_id)); > */ > public class JoinedDeleteTest extends TorqueTestCase { > private static final int PRESENT_FK = 50; > private static final int MISSING_FK = 100; > > /** > * delete from t2 where t1_id = 100 > * passes > */ > public void testDirectDelete() throws Exception { > delete(direct(), direct()); > } > > private static Criteria direct() { > return new Criteria().add(T2Peer.T1_ID, MISSING_FK); > } > > /** > * delete from t2 where t1.t1_id = 100 and t2.t1_id = t1.t1_id > * fails because all records are deleted > */ > public void testJoinedDelete() throws Exception { > delete(joined(), joined()); > } > > private static Criteria joined() { > return new Criteria().add(T1Peer.T1_ID, > MISSING_FK).addJoin(T1Peer.T1_ID, T2Peer.T1_ID); > } > > private void delete(Criteria c1, Criteria c2) throws Exception { > // there are concerns that re-use of a Criteria can > // have undesirable effects. So we need two identical > // criteria here. > assertEquals(c1, c2); > assertNotSame(c1, c2); > > // start with an empty table > T2Peer.doDelete(new Criteria()); > assertEquals(0, countT2s()); > > // add one record with a foreign key of 50 > T2 t2 = new T2(); > t2.setT1Id(PRESENT_FK); > t2.save(); > > // see that the record made it in > assertEquals(1, countT2s()); > > // there are no t2 records with the MISSING_FK > assertEquals(0, new CountHelper().count(c1)); > // try to delete only records with the MISSING_FK > T2Peer.doDelete(c2); > > // expect that no records were deleted > assertEquals(1, countT2s()); > } > > private int countT2s() throws TorqueException { > return new CountHelper().count(new > Criteria().add(T2Peer.T2_ID, 0, Criteria.GREATER_EQUAL)); > } > > } > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]