[Resolvido] VRaptor Listar campos de tabela relacionamento ManyToMany

Bom dia,

estou com o seguinte problema:

quero listar os valores de uma determinada tabela junto com alguns valores de outra tabela cujo relacionamento entre elas são ManyToMany.

Tenha os seguintes Beans:

@Entity
@Table(name = "guarnicao")
public class Guarnicao {

	@Id
	@GeneratedValue
	@Column(name = "cod_guarnicao")
	private Long codGuarnicao;

        // outros atributos

	@ManyToMany
	@JoinTable(name = "guarnicao_militar", joinColumns = { @JoinColumn(name = "cod_guarnicao", unique = false, nullable = false, insertable = true) }, inverseJoinColumns = { @JoinColumn(name = "cod_militar", unique = false, nullable = false, insertable = true) })
	private Collection<Militar> militares = new ArrayList<Militar>();[/code]

[code]@Entity
@Table(name = "militar")
public class Militar {

	@Id
	@GeneratedValue
	@Column(name = "cod_militar")
	private Long codMilitar;

	@ManyToOne(optional = false)
	@JoinColumn(name = "cod_unidade")
	private Unidade unidade;

	@Column(name = "nome_completo", length = 100, nullable = false)
	private String nomeCompleto;

	@Column(name = "nome_guerra", length = 50, nullable = false)
	private String nomeGuerra;
 
          // outros atributos

E na minha lista.jsp coloquei da seguinte forma:

<c:forEach items="${guarnicaoList}" var="guarnicao" >
			<tr>
				<td><fmt:formatDate pattern="dd/MM/yyyy HH:mm"
						value="${guarnicao.inicioTurno.time}" /></td>
				<td><fmt:formatDate pattern="dd/MM/yyyy HH:mm"
						value="${guarnicao.terminoTurno.time}" /></td>
				<td>${guarnicao.militares}</td>
				<td>${guarnicao.viatura.prefixo}</td>
				<td>${guarnicao.patrulhamento}</td>

.....

Todos os campos estão sendo exibidos corretamente exceto o campo ${guarnicao.militares} que está sendo exibido assim: [quote][br.com.sisco.modelo.Militar@32fb80, br.com.sisco.modelo.Militar@2dce4e] [/quote].

Qual seria a forma correta de escrever este código para, por exemplo, exibir o nomeCompleto da classe militar?

Isto ocorre porque você esta acessando uma collection do objeto,
tentando imprimir um objeto e não um atributo do objeto.

[quote=E.Silva]Isto ocorre porque você esta acessando uma collection do objeto,
tentando imprimir um objeto e não um atributo do objeto.

[/quote]

Eu já havia tentado desta forma,
aparece o seguinte erro:

[code]br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/guarnicoes/lista.jsp at line 25

22: value="${guarnicao.inicioTurno.time}" />
23:

<fmt:formatDate pattern=“dd/MM/yyyy HH:mm"
24: value=”${guarnicao.terminoTurno.time}" />
25: ${guarnicao.militares.nomeCompleto}
26: ${guarnicao.viatura.prefixo}
27: ${guarnicao.patrulhamento}
28: [/code]

Cara, faz outro for each para percorrer a lista que esta dentro do objeto guarnicao
:stuck_out_tongue:

[quote=d34d_d3v1l]Cara, faz outro for each para percorrer a lista que esta dentro do objeto guarnicao
:P[/quote]

Valeu pela dica cara! Desta forma não tinha pensado ainda!

Ficou assim então: <c:forEach items="${guarnicao.militares}" var="militares"> ${militares.nomeCompleto} </c:forEach>

Isto :wink:

resolveu?
coloca [RESOLVIDO] no titulo do topico cara :wink:
abraços