now that I recall, I had to patch BasePeer... I think it was (but not for sure, check old posts)
line 1220 for (int i = 0; i < orderBy.size(); i++) { String orderByColumn = orderBy.get(i); String alias = orderByColumn.substring(0, orderByColumn.lastIndexOf(' ')); if (aliases.containsKey(alias)) { orderByClause.add(orderByColumn); } else { if (orderByColumn.indexOf('.') == -1){ throwMalformedColumnNameException("order by",orderByColumn); } ... e-mail me if you can't get it to work and I'll send you my source class. andres -----Original Message----- From: William Wong [mailto:[EMAIL PROTECTED] Sent: Martes, 20 de Enero de 2004 01:26 p.m. To: Apache Torque Users List Subject: RE: Criteria question... Hi Andres, Which version of Torque are u using? I'm currently running 3.1 and got below exception when I use your solution: org.apache.torque.TorqueException: Malformed column name in Criteria order by: 'RAND() ASC' is not of the form 'table.column' at org.apache.torque.util.BasePeer.throwMalformedColumnNameException(BasePe er.j ava:2591) at org.apache.torque.util.BasePeer.createQuery(BasePeer.java:1242) at org.apache.torque.util.BasePeer.createQueryString(BasePeer.java:984) at org.apache.torque.util.BasePeer.doSelect(BasePeer.java:1391) at org.apache.torque.util.BasePeer.doSelect(BasePeer.java:1368) The above exception is throwed by below code in BasePeer.java. It is expecting the orderby to in a column name format. for (int i = 0; i < orderBy.size(); i++) { String orderByColumn = (String) orderBy.get(i); if (orderByColumn.indexOf('.') == -1) { throwMalformedColumnNameException("order by", orderByColumn); } String tableName = orderByColumn.substring(0, orderByColumn.indexOf('.')); Any recommendation? I understand your sql statement 'select *, rand() as rnd from table order by rnd asc limit 2' will work but it seems the BasePeer is enforcing the column name as the order by argument. Thanks and regards, William -----Original Message----- From: Andres Quijano - Rizonet [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 8:12 PM To: 'Apache Torque Users List' Subject: RE: Criteria question... I use this to get a random row from a table: Criteria crit = new Criteria(); crit.addAsColumn("rnd", "rand()"); crit.addAscendingOrderByColumn("rnd"); crit.setLimit(1); YourTableNamePeer.doSelect(crit); hope it helps -----Original Message----- From: William Wong [mailto:[EMAIL PROTECTED] Sent: Domingo, 18 de Enero de 2004 10:32 p.m. To: [EMAIL PROTECTED] Subject: Criteria question... Hi All, Is there any easy way to convert below Mysql select statement into a Criteria statement? select * from name order by rand() limit 1; Can I use Criteria.CUSTOM to achieve it? Thank you in advance. Regards, William --------------------------------------------------------------------- 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] --------------------------------------------------------------------- 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]