One to many com xml (hbm)

4 respostas
rdgms

Aew olhem esse codigo :

As classes
public class Perfil {
    
    private int id;
    private String perfil;
    private String descricaoPerfil;
    private boolean flagAtivo;
//bla bla bla
public class Usuario {

    private int id;
    private String nomeCompleto;
    private String usuario;
    private String senha;
    private String codigo;
    private boolean flagAtivo;
    private Set<Perfil> listaPerfil;
//bla bla bla

os hbm:

<?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">
<hibernate-mapping>
  <class dynamic-insert="false" 
  dynamic-update="false" 
  mutable="true" 
  name="br.emp.acesso.model.Perfil" 
  optimistic-lock="version" 
  polymorphism="implicit" 
  select-before-update="false" 
  table="perfil">
      
      <id name="id" column="id" type="integer">          
          <generator class="assigned" />          
      </id>
      
      <property name="perfil"            column="perfil"            type="string"/>
      <property name="flagAtivo"         column="flagAtivo"         type="boolean"/>
      <property name="descricaoPerfil"   column="descricaoPerfil"   type="string"/>     
   

  </class>
</hibernate-mapping>
<?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">
<hibernate-mapping>
  <class dynamic-insert="false" dynamic-update="false" mutable="true" name="br.emp.acesso.model.Usuario" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="usuario">
    
    <id column="id" name="id" type="integer">
      <generator class="assigned"/>
    </id>
    
    <property column="usuario"      name="usuario"       type="string"/>
    <property column="senha"        name="senha"         type="string"/>
    <property column="nomeCompleto" name="nomeCompleto"  type="string"/>
    <property column="flagAtivo"    name="flagAtivo"     type="boolean"/>
    <property column="codigo"       name="codigo"        type="string"/>
    
    <!-- Relacionamento com um usuario para um perfil-->
   <set name="listaPerfil" inverse="true" cascade="save-update" mutable="true">
       <key column="idPerfilFk" />
       <one-to-many class="br.emp.acesso.model.Perfil"  />          
   </set>
            
  </class>
</hibernate-mapping>
oque acontece eh que ele grava no banco o usuario so nao grava a fk dofk

4 Respostas

J

Tenho um exemplo que pode te auxiliar, segue abaixo:

Usuario.hbm.xml

<?xml version=“1.0”?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<hibernate-mapping>

&lt;class name="Model.Usuario" table="usuario"&gt;
            &lt;id name="codigo" column="codigo" type="long"&gt;
                    &lt;generator class="increment"/&gt;
            &lt;/id&gt;
            &lt;property    name="nome" column="nome" type="string"/&gt;
            &lt;property    name="telefone" column="telefone" type="string"/&gt;
            &lt;property    name="celular" column="celular" type="string"/&gt;
            &lt;property    name="email" column="email" type="string"/&gt;
            &lt;property    name="home_page" column="home_page" type="string"/&gt;
            &lt;property    name="complemento" column="complemento" type="string"/&gt;
            &lt;property    name="rg" column="rg" type="string"/&gt;
            &lt;property    name="cpf" column="cpf" type="string"/&gt;
            &lt;property    name="nivel" column="nivel" type="string"/&gt;
            &lt;property    name="login" column="login" type="string"/&gt;
            &lt;property    name="senha" column="senha" type="string"/&gt;
            &lt;property    name="status" column="status" type="string"/&gt;
            &lt;many-to-one name="cargo" class="Model.Cargo" column="idcargo"/&gt;                
            &lt;many-to-one name="cep" class="Model.Cep" column="idcep" cascade="save-update"/&gt;                
    &lt;/class&gt;

</hibernate-mapping>

Cargo.hbm.xml

<?xml version=“1.0”?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<hibernate-mapping>

&lt;class name="Model.Cargo" table="cargo"&gt;
            &lt;id name="idcargo" column="idcargo" type="long"&gt;
                &lt;generator class="increment"/&gt;
            &lt;/id&gt;
            &lt;property name="nome" column="nome" type="string"/&gt;
    &lt;/class&gt;

</hibernate-mapping>

Cep.xml

<?xml version=“1.0”?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<hibernate-mapping>

&lt;class name="Model.Cep" table="cep"&gt;
            &lt;id name="cep" column="numcep" type="string"&gt;
            &lt;/id&gt;
            &lt;property name="logradouro" column="logradouro" type="string"/&gt;
            &lt;property name="bairro" column="bairro" type="string"/&gt;
            &lt;property name="cidade" column="cidade" type="string"/&gt;
            &lt;property name="uf" column="uf" type="string"/&gt;
            &lt;property name="tipologradouro" column="tipologradouro" type="string"/&gt;
    &lt;/class&gt;

</hibernate-mapping>

rdgms

Entendi…vc fez o contrario (many to one) mais cara eu queria… atraves do usario pegar o perfil… para isso eu tenho que
relacionar one to many no usuario ne?
eh isso que nao estou conseguindo…
se vc tiver um exemplo completo ate a estrutra do banco kkk
ajudaria…
VLW!

J

As classes Usuário e Cargo, seguem a mesma linha de raciocinio: Na sua classe usuario, tenta seguir o mapeamento conforme eu te passei, que vc terá resultado desejado.

Cargo.java

package Model;

import View.*;

public class Cargo {

private Long idcargo;

private String nome;
/**
 * Creates a new instance of Cargo
 */
public Cargo() {
}

public Long getIdcargo() {
    return idcargo;
}

public void setIdcargo(Long codigo) {
    this.idcargo = codigo;
}

public String getNome() {
    return nome;
}

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

}

Usuario.java

package Model;

import View.*;

public class Usuario {

private Long codigo;

private String nome;

private String telefone;

private String celular;

private String email;

private String home_page;

private String complemento;

private String rg;

private String cpf;

private String nivel;

private Cep    cep;

private Cargo  cargo;

private String login;

private String senha;

private String status;

/** Creates a new instance of Cliente */

public Usuario() {

}
public Long getCodigo() {
    return codigo;
}

public void setCodigo(Long codigo) {
    this.codigo = codigo;
}

public String getNome() {
    return nome;
}

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

public String getTelefone() {
    return telefone;
}

public void setTelefone(String telefone) {
    this.telefone = telefone;
}

public String getCelular() {
    return celular;
}

public void setCelular(String celular) {
    this.celular = celular;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getHome_page() {
    return home_page;
}

public void setHome_page(String home_page) {
    this.home_page = home_page;
}

public String getComplemento() {
    return complemento;
}

public void setComplemento(String complemento) {
    this.complemento = complemento;
}

public String getRg() {
    return rg;
}

public void setRg(String rg) {
    this.rg = rg;
}

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public String getNivel() {
    return nivel;
}

public void setNivel(String nivel) {
    this.nivel = nivel;
}

public Cep getCep() {
    return cep;
}

public void setCep(Cep cep) {
    this.cep = cep;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public Cargo getCargo() {
    return cargo;
}

public void setCargo(Cargo cargo) {
    this.cargo = cargo;
}

}

rdgms

VALEU FUNCIONOU!!

Criado 28 de outubro de 2008
Ultima resposta 2 de nov. de 2008
Respostas 4
Participantes 2