db-torque-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manaster, Carl" <Ca...@ACTIVX.com>
Subject RE: Joined Delete
Date Thu, 10 Apr 2008 15:55:22 GMT
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.


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();

		// 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
		// 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: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org

View raw message