Pessoal, estou a começar a utilizar o hibernate, e estou com dificuldade em fazer mapemanto onetoone.
Tenho das tabelas, usuarios e grupos, onde um usuario só pertence a um grupo, e um grupo pode ter N usuarios
Os scripts do BD são:
CREATE TABLE "public"."Grupos" (
"id_pk_gru" int2 DEFAULT NULL NOT NULL,
"nome" varchar(30) DEFAULT NULL NOT NULL,
"descricao" varchar(30) DEFAULT NULL,
CONSTRAINT "Grupo_pkey" PRIMARY KEY ("id_pk_gru"),
CONSTRAINT "valida_grupo" UNIQUE ("id_pk_gru", "nome")
)
WITH (OIDS=FALSE)
;
CREATE TABLE "public"."usuarios" (
"id_pk_usu" int2 DEFAULT NULL NOT NULL,
"nome" varchar(50) DEFAULT NULL NOT NULL,
"senha" varchar(160) DEFAULT NULL NOT NULL,
"nome_usuario" varchar(30) DEFAULT NULL NOT NULL,
"id_fk_gru" int2 DEFAULT NULL,
"e_mail" varchar(30) DEFAULT NULL,
CONSTRAINT "Usuario_pkey" PRIMARY KEY ("id_pk_usu"),
CONSTRAINT "id_pk_grupo" FOREIGN KEY ("id_fk_gru") REFERENCES "public"."Grupos" ("id_pk_gru") ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT "valida_usuario" UNIQUE ("id_pk_usu", "nome_usuario")
)
WITH (OIDS=FALSE)
;
ALTER TABLE "public"."usuarios" OWNER TO "postgres";
As classes:
/*
* UsuarioDTO.java
*
* Created on 12 de Março de 2007, 13:44
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package bean;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**Classe responsavel pela tranferencia de dados entre objeto usuario e os dados do banco,
*
* @author Rogerio Tomassoni
*
* @version 0.1
*
* @since Release 01 da aplicacao
*
*/
@Entity
@Table(name = "Usuarios")
public class UsuarioBean implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id_pk_usu")
private int id_pk_usu;
private String nome;
private String senha;
private String nome_usuario;
private int id_fk_gru;
private String e_mail;
/**
* Metodos get e set para todos os atibutos do objeto usuario
*/
public int getId_pk_usu() {
return id_pk_usu;
}
public void setId_pk_usu(int id_pk_usu) {
this.id_pk_usu = id_pk_usu;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public int getId_fk_gru() {
return id_fk_gru;
}
public void setId_fk_gru(int id_fk_gru) {
this.id_fk_gru = id_fk_gru;
}
public String getNome_usuario() {
return nome_usuario;
}
public void setNome_usuario(String nome_usuario) {
this.nome_usuario = nome_usuario;
}
public String getE_mail() {
return e_mail;
}
public void setE_mail(String e_mail) {
this.e_mail = e_mail;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import control.HibernateUtil;
import java.util.List;
import org.hibernate.Session;
/**
*
* @author Tomassoni
*/
public class UsuarioDAO {
private Session session;
public List listar() {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List usuarios = session.createQuery("from UsuarioBean").list();
session.getTransaction().commit();
return usuarios;
}
}
/*
* GrupoDTO.java
*
* Created on 5 de Maio de 2007, 18:46
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package bean;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Entity;
/**Classe reponsavel pelo tranferencia de dados da entidade que representa
*os grupos de usarios
*
* @author Rogerio Tomassoni
*
*@version 0.1
*
* @since 01 da aplicacao
*/
@Entity
@Table(name = "Grupos")
public class GrupoBean implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id_pk_gru")
private int id_pk_gru;
private String nome;
private String descricao;
public GrupoBean() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
/**
* @return the id
*/
/**
* @return the id_pk_gru
*/
public int getId_pk_gru() {
return id_pk_gru;
}
/**
* @param id_pk_gru the id_pk_gru to set
*/
public void setId_pk_gru(int id_pk_gru) {
this.id_pk_gru = id_pk_gru;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import control.HibernateUtil;
import java.util.List;
import org.hibernate.Session;
/**
*
* @author Tomassoni
*/
public class GrupoDAO {
private Session session;
public List listar() {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List usuarios = session.createQuery("from Grupos").list();
session.getTransaction().commit();
return usuarios;
}
}
Chamo assim:
UsuarioDAO usuarioDAO = new UsuarioDAO();
List<UsuarioBean> listaUsuarios = usuarioDAO.listar() ;
for (UsuarioBean usuarioBean : listaUsuarios) {
System.out.println(usuarioBean.getNome_usuario() + " - " + usuarioBean.getId_fk_gru());
}
O resultado está certo, a pesquisa é feita em usuario, mas como faço para fazer com que ele traga o grupo do usuario também?
Alguém poderia me ajudar?