Chloe
Chloe

Reputation: 26274

How to access duplicate column names with JSTL sql:query?

For some reason, this

    <sql:query dataSource="${ds}" sql="select user.id, user.name as userName, city, state, country, country.name as countryName, latitude, longitude, ip, last_visit from user, country where user.country = country.id order by last_visit desc limit 100" var="result"/>
    <c:forEach var="col" items="${result.columnNames}">
        ${col}, 
    </c:forEach>

produces

id, name, city, state, country, name, latitude, longitude, ip, last_visit,

Which is wrong. I specifically renamed the columns in the query. I don't know how it found the original field name. So how can I access the value of user.name? ${row.userName} doesn't work.

I'm using JSTL jstl-1.2.2.

Upvotes: 4

Views: 2138

Answers (1)

sgeddes
sgeddes

Reputation: 62851

Not sure if this will help, but I've read that using aliases will not always work correctly. A possible alternative I've seen:

 <sql:query dataSource="${ds}" sql="select user.id, concat(user.name,'') as userName, city, state, country, concat(country.name,'') as countryName, latitude, longitude, ip, last_visit from user, country where user.country = country.id order by last_visit desc limit 100" var="result"/>
    <c:forEach var="col" items="${result.columnNames}">
        ${col}, 
    </c:forEach>

Hope this helps. Good luck.

Upvotes: 6

Related Questions