Foreign key com Displaytag

Pessoal, venho aqui mais uma vez para pedir ajuda a vocês.

Estou usando Displaytag para paginar uma consulta. Está funcionando perfeitamente.
O problema é que a tabela em que consulto possui uma foreign key idDestino e a displaytag mostra o id e não o nome do destino (que está em outra tabela).
Gostaria de saber como que posso fazer para mostrar o nome do destino.

Já tentei inner join no sql e não consegui. Utilizo hibernate no meu projeto.

Por acaso tem algum jeito de buscar o nome do destino e mostrar ele no lugar do id?

Agradeço deste já.

Como você está buscando atualmente?

no listar.jsp eu estou usando o displaytag assim:

<display:table name="listar" pagesize="10" requestURI="default.jsp"> <display:column property="nome" title="Nome"/> <display:column property="idDestino" title="Destino"/> <display:column property="dataHora" title="Data/Hora"/> <display:column property="previsaoFim" title="Previsão de retorno"/> <display:column property="observacao" title="Observação"/> </display:table>

Quando eu uso o SQL desse jeito

Query query = session.createQuery("FROM Usuario ORDER BY nome ASC");

Ele me retorna certinho na displaytag mais se eu tento algo como

Query query = session.createSQLQuery("SELECT u.nome, d.nomeDestino FROM Usuario u inner join Destino d on u.idDestino = d.idDestino ORDER BY nome ASC");

Ele me retorna o seguinte erro:

java.lang.NoSuchMethodException: Unknown property 'nome'

Só que não consegui achar aonde da o erro ainda.

Antes, eu usava o seguinte:

[code]<table class=“lista” cellpadding=“10” cellspacing=“1” width=“100%”>
<tr>
<td>Nome</td>
<td>Destino</td>
<td>Data/Hora</td>
<td>Previsão de término</td>
<td>Observação</td>
<td>Excluir</td>
<tr>

<% List<Usuario> usuario = (List<Usuario>)request.getAttribute(“listar”);
List<Destino> destino = (List<Destino>)request.getAttribute(“combo”);

DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm");

for (Usuario u : usuario){ %>
<tr class=“dif”>
<td><%=u.getNome()%></td>
<td><%=destino.get(u.getIdDestino()-1).getNomeDestino()%></td>
<td><%=df.format(u.getDataHora())%></td>
<td><%=df.format(u.getPrevisaoFim())%></td>
<td align=“justify”>     <%=u.getObservacao()%></td>
<td><center><input type=“image” src=“images/excluir.gif”></center></td>
</tr>
<% } %>
</table>[/code]

Funciona perfeitamente, só que não tem paginação e estou precisando da paginação.

Sua classe usuário tem get/set nome?

Unknown property ‘nome’

Meu Usuario.java

[code]package modelo;

import java.util.Date;

// Arquivo responsável por declarar as variáveis de usuario utilizadas no sistema
public class Usuario {

private int idUsuario;
private int idDestino;
private String nome;
private Date dataHora;
private Date previsaoFim;
private String observacao;

public Usuario() {};

public Usuario(int idUsuario, int idDestino, String nome, Date dataHora,
		Date previsaoFim, String observacao) {
	super();
	this.idUsuario = idUsuario;
	this.idDestino = idDestino;
	this.nome = nome;
	this.dataHora = dataHora;
	this.previsaoFim = previsaoFim;
	this.observacao = observacao;
}

public int getIdUsuario() {
	return idUsuario;
}

public void setIdUsuario(int idUsuario) {
	this.idUsuario = idUsuario;
}

public int getIdDestino() {
	return idDestino;
}

public void setIdDestino(int idDestino) {
	this.idDestino = idDestino;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public Date getDataHora() {
	return dataHora;
}

public void setDataHora(Date dataHora) {
	this.dataHora = dataHora;
}

public Date getPrevisaoFim() {
	return previsaoFim;
}

public void setPrevisaoFim(Date previsaoFim) {
	this.previsaoFim = previsaoFim;
}

public String getObservacao() {
	return observacao;
}

public void setObservacao(String observacao) {
	this.observacao = observacao;
}

}[/code]

E como você mapeou no xml?

Você mapeou essa classe?

Se sim, tenta trocar seu sql por:
ORDER BY u.nome ASC

Outra coisa, o erro: java.lang.NoSuchMethodException: Unknown property ‘nome’

vem após a consulta ou vem na hora de exibir os dados na tela?

Meu usuario.xml:

[code]<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE hibernate-mapping
PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<!-- ARQUIVO RESPONSÁVEL PELA CONEXÃO COM A TABELA Usuario DO BD -->
<hibernate-mapping package=“modelo”>
<class name=“Usuario” table=“Usuario”>

<!-- Identificador da classe -->
<id column=“idUsuario” name=“idUsuario” type=“integer”>
<generator class=“identity”></generator>
</id>

<!-- Propriedades da classe -->
<property name=“idDestino”/>
<property name=“nome”/>
<property name=“dataHora” type=“timestamp”/>
<property name=“previsaoFim” type=“timestamp”/>
<property name=“observacao” type=“text”>
</property>

</class>
</hibernate-mapping>[/code]

E eu já tentei trocar por order by u.nome mais também não surtiu efeito.
Se entendi bem, ele vem na hora de exibir os dados na tela.

Segue o erro completo, talvez pra você que entende de java faça a diferença (ainda não aprendi a interpretar o relatório de erros por completo).

Fev 03, 2012 1:25:27 PM org.apache.catalina.core.ApplicationDispatcher invoke Grave: Servlet.service() for servlet jsp threw exception java.lang.NoSuchMethodException: Unknown property 'nome' at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122) at org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(PropertyUtils.java:408) at org.displaytag.util.LookupUtil.getProperty(LookupUtil.java:271) at org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:129) at org.displaytag.model.Column.getValue(Column.java:124) at org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:201) at org.displaytag.model.Column.initialize(Column.java:178) at org.displaytag.render.TableWriterTemplate.writeTableBody(TableWriterTemplate.java:313) at org.displaytag.render.TableWriterTemplate.writeTable(TableWriterTemplate.java:138) at org.displaytag.render.HtmlTableWriter.writeTable(HtmlTableWriter.java:734) at org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1647) at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1300) at org.apache.jsp.listar_jsp._jspx_meth_display_005ftable_005f0(listar_jsp.java:179) at org.apache.jsp.listar_jsp._jspService(listar_jsp.java:109) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) at org.apache.jsp.index_jsp._jspService(index_jsp.java:196) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at controle.ListarServlet.doService(ListarServlet.java:50) at controle.ListarServlet.doGet(ListarServlet.java:27) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680) at org.apache.jsp.default_jsp._jspService(default_jsp.java:64) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)