Hi All I am trying to pass list of MapPointBeans to the query. The MapPointBean contains a latitude and longitude for one location. I want to dynamically place the latitudes and longitudes in the query. The query is not returning any records (see Query1). but when I remove the iterate tag (see Query 2), its returning records. Pls tell me if there is any thing wrong in the Query 1..
Query 1 -------- <statement id="searchlocation" parameterClass="java.util.List" resultClass="com.apps.spring.models.LocationBean"> <iterate conjunction="UNION"> <![CDATA[ SELECT l.location_code as locationCode FROM location_schema.locations l WHERE (( 3959 * acos( cos( ((#[].latitude# *3.1415926535897932684626433)/180) ) * cos( (( l.latitude*3.1415926535897932684626433)/180 ) ) * cos( ((-l.longitude*3.1415926535897932684626433)/180 ) - ((- #[].longitude# *3.1415926535897932684626433)/180) ) + sin( ((#[].latitude# *3.1415926535897932684626433)/180) ) * sin( ((l.latitude *3.1415926535897932684626433)/180 ) ) ) ) > 7500) ]]> </iterate> </statement> Its working fine when I remove the iterate tag(Query 2), but its not returning any records when I use iterate tag Query 2 ------- <select id="searchlocation" parameterClass="list" resultClass="com.penske.apps.locationservice.spring.models.LocationBean"> <![CDATA[ SELECT l.location_code as locationCode FROM psk_location.locations l where (( 3959 * acos( cos( ((33.6193*3.1415926535897932684626433)/180) ) * cos( (( l.latitude*3.1415926535897932684626433)/180 ) ) * cos( ((-l.longitude*3.1415926535897932684626433)/180 ) - ((-111.9036*3.1415926535897932684626433)/180) ) + sin( ((33.6193*3.1415926535897932684626433)/180) ) * sin( ((l.latitude *3.1415926535897932684626433)/180 ) ) ) ) > 7500) UNION (SELECT l.location_code as locationCode FROM psk_location.locations l where (( 3959 * acos( cos( ((32.8689*3.1415926535897932684626433)/180) ) * cos( (( l.latitude*3.1415926535897932684626433)/180 ) ) * cos( ((-l.longitude*3.1415926535897932684626433)/180 ) - ((-97.2381*3.1415926535897932684626433)/180) ) + sin( ((32.8689*3.1415926535897932684626433)/180) ) * sin( ((l.latitude *3.1415926535897932684626433)/180 ) ) ) ) > 7500)) ]]> </select> Here is the DAO method public List searchLocation(LocationSearchBean locationSearchBean) throws LocationServiceDataAccessException { List lstLocations = null; MapPointBean mapPointBean = null; String radius = null; if (locationSearchBean != null) { lstLocations = new ArrayList(); mapPointBean = new MapPointBean(); mapPointBean.setLatitude(33.6193); mapPointBean.setLongitude(-111.9036); lstLocations.add(mapPointBean); mapPointBean = new MapPointBean(); mapPointBean.setLatitude(32.8689); mapPointBean.setLongitude(-97.2381); lstLocations.add(mapPointBean); } try { List lst = getSqlMapClientTemplate().queryForList("searchlocation", lstLocations); System.out.print("lst : " + lst); } catch (DataAccessException ex) { logger.error("In LocationDaoImpl - searchLocation ", ex); throw new LocationServiceDataAccessException(ex); } return lstLocations; } public class MapPointBean implements Serializable { /** * */ private static final long serialVersionUID = 7904309409352994862L; private double latitude; private double longitude; /** * @return the latitude */ public double getLatitude() { return latitude; } /** * @param latitude the latitude to set */ public void setLatitude(double latitude) { this.latitude = latitude; } /** * @return the longitude */ public double getLongitude() { return longitude; } /** * @param longitude the longitude to set */ public void setLongitude(double longitude) { this.longitude = longitude; } } Pls let me know, if there is any thing wrong in the query Thanks Pradeep -- View this message in context: http://www.nabble.com/using-iterate-with-UNION-tp22655295p22655295.html Sent from the iBATIS - User - Java mailing list archive at Nabble.com.