with this method all is ok, the problem was that Chris wanted to add dicertly a List with Records and not Integers. When BasePeer composes query each Criterion value is converted to String. Village's Record.toString() is implemented so that each Record field is surrounded with {}. E.g. if it contains an Integer it will be something like "WHERE ID = {1000}".
Regards, Kostya
Sperlich, Tino wrote:
Hi Chris.
you have probably fixed the problem; but just for my info: in the API of criteria there is a method like this
public Criteria addNotIn(java.lang.String column, java.util.List values)
is there something wrong with this or would that do the job, too?
Kind regards,
Tino Sperlich
-----Urspr�ngliche Nachricht----- Von: Chris Joelly [mailto:[EMAIL PROTECTED] Gesendet: Freitag, 27. Februar 2004 16:02 An: Apache Torque Users List Betreff: Re: Torque, building Criteria for query ...
Hi Kostya!
i managed to use the following code for the query:
Criteria critEreignisse = new Criteria(); critEreignisse.setDistinct(); critEreignisse.addSelectColumn(EreignisPeer.DATEITYP_ID); critEreignisse.add(EreignisPeer.INT_IAKZ, int_iakz); List dateitypIds = BasePeer.doSelect(critEreignisse); Iterator i = dateitypIds.iterator(); int[] dt = new int[dateitypIds.size()]; for (int c = 0; c < dateitypIds.size(); c++) { dt[c] = ((Record) dateitypIds.get(c)).getValue(1).asInt(); } Criteria critDateitypen = new Criteria(); critDateitypen.addNotIn(Dateityp2aktenartPeer.DATEITYP_ID, dt);
as you can see i use the addNotIn method to add an int[], but why can't i use the addNotIn method with the returned List itself?
eg: critDateitypen.addNotIn(Dateityp2aktenartPeer.DATEITYP_ID, dateitypIds);
thx, Chris
Am Fri, Feb 27, 2004 at 09:54:23AM +0100, Kostyantyn Shchekotykhin meinte:
Criteria object doesn't support inner queries, because not all databases support them. So you can try something this like this, but remember that this solution highly depends on your database:
Criteria criteria = new Criteria();
criteria.setDistinct();
criteria.addSelectColumn(YourPeer.COL1);
criteria.add(YourPeer.COL2, "value1");
Criteria criteria2 = new Criteria();
criteria2.add(YourPeer2.COL1, (Object)(YourPeer2.COL1 + " NOT IN " + BasePeer.createQueryString(criteria)), Criteria.CUSTOM);
YourPeer2.doSelect(criteria2);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
