Hibernate - Relacionamento Entre duas tabelas

Tenho uma classe Review.java e outra Usuario.java. Tenho uma tabela review que nela contém o id do usuario que vez o review. Como faço para pegar todos os nomes dos usuarios que fizeram os reviews. Ex: select usu_nome from usuario,review where usuario.usu_id = review.usu_id

Usuario.java
@Entity
public class Usuario {

@Id	
@Column(name = "usu_id")
private int id;
@Column(name = "usu_nome")
private String nome;
@Column(name = "usu_login")
private String login;
@Column(name = "usu_senha")
private String senha;
@Column(name = "e_mail")
private String e_mail;

   //get e set

}

Review.java

@Entity
public class Review {

@Id	
@Column(name = "rev_id")
private int id;

@Column(name = "rev_desc")
private String descricao;

@Column(name = "prod_id")
private int prod_id;

@Column(name = "usu_id")
private int usu_id;

}

Com Hibernate não faz mapeamento de ids desta maneira. Você mapeia o relacionamento entre os objetos. Por exemplo:

Usuario.java 
@Entity 
public class Usuario {	

@Id	
@Column(name = "usu_id") 
private int id; 
@Column(name = "usu_nome") 
private String nome; 
@Column(name = "usu_login") 
private String login; 
@Column(name = "usu_senha") 
private String senha; 
@Column(name = "e_mail") 
private String e_mail; 

//get e set 
} 



Review.java 

@Entity 
public class Review { 

@Id	
@Column(name = "rev_id") 
private int id; 

@Column(name = "rev_desc") 
private String descricao; 

@ManyToOne
@JoinColumn(name = "usu_id") 
private Usuario usuario; 
} 

O @ManyToOne diz que um Review tem um Usuario e um Usuario pode ter muitos Review. Desta maneira, quando você carregar o Review, basta chamar review.getUsuario() para obter o usuário relacionado.

Procure por @OneToOne e @OneToMany. Ou melhor, leia a documentação do Hibernate (www.hibernate.org/docs). :wink:

No mapeamento de Usuario você vai precisar mapear “reviews” como OneToMany conforme o wagnerfrancisco falou pra você pesquisar. Depois disso faz a query para o que você quer, retornando os usuários onde existam reviews:

            List resultado = suaSession.createCriteria(Usuario.class)
                .add(Restrictions.isNotEmpty("reviews"))
                .list();

hum… Então no meu jsp eu coloco:

			<input type="text" name="review.usuario.id" value="${usuarioWeb.id}" />

[quote=Vinustux]hum… Então no meu jsp eu coloco:

			<input type="text" name="review.usuario.id" value="${usuarioWeb.id}" />

[/quote]
Daí pra frente não sei, você parece estar falando de outro assunto não direcionado a Hibernate.

Vou postar classe Produto(atualizada) e não review, Usuario(atualizada).

Usuario.java

@Entity
public class Usuario {
@Id
@Column(name = “usu_id”)
private int id;
@Column(name = “usu_nome”)
private String nome;
@Column(name = “usu_login”)
private String login;
@Column(name = “usu_senha”)
private String senha;
@Column(name = “e_mail”)
private String e_mail;

@OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL)
public Collection<Produto> listaProdutoUsuario;

}

Produto.java

public class Produto {

@Id	
@Column(name = "prod_id")
private int id;
@Column(name = "prod_cod")
private String codigo;
@Column (name = "prod_nome")
private String nome;

@ManyToOne
@JoinColumn (name = "usu_id")
private Usuario usuario;

}

ProdutoController.java

@Restrito
@Post("/produto")
public void salvar(final Produto produto){
produtoDAO.save(produto);

result.redirectTo(this).listar();	

}

novo.jsp(jsp que cadastra o produto)

			<input type="text" name="usuario.id" value="${usuarioWeb.id}" />
		
			<label> C&oacute;digo: </label>			
			<input type="text" name="produto.codigo" /> <br/>
			
			<label>Nome:</label>
			<input type="text" name="produto.nome"/> <br/>

			<label>Descri&ccedil;&acirc;o:</label>				
			<textarea name="produto.descri"></textarea><br/>
			
			
			<input type="submit" value="salvar" class="btn"/>
		</form>

Vi vários exemplos utilizando os relacionamentos e todos não mostram usando jsp. O UsuarioWeb.id tem o id do usuario que está logado. Como faço para passar para cadastrar o produto ele associando ao usuario que cadastrou?

javaflex

Consegui a primeira parte:

no ProdutoController.java:

public void salvar(final Produto produto, Usuario usuario){
usuario = this.usuarioDAO.loadById(usuario);
produto.setUsuario(usuario);

}
desta forma ele esta salvando o campor usu_id com o id do usuario logado.

Agora não estou conseguindo fazer o list, poderia me ajudar?

Se ja resolveu seu problema de mapeamento com hibernate seria melhor formular seu novo problema em um topico novo e numa categoria de forum voltada para web. Nao esqueca de especificar qual framework web está usando, mostrar o codigo completo envolvido e explicar mais pontualmente o problema no codigo.