2016-02-13 122 views
0

我收到以下错误,当我试图挽救它被映射为多对多的休眠我的对象:类抛出:IllegalArgumentException休眠许多一对多

抛出:IllegalArgumentException:model.Especialidade,财产的getter方法: idespecialidade

下面

是我especialidade.hbm

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated 16/11/2015 11:41:49 by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="model.Especialidade" table="especialidade" schema="public" optimistic-lock="version"> 
     <id name="idespecialidade" type="int"> 
      <column name="idespecialidade" /> 
      <generator class="increment" /> 
     </id> 
     <property name="descricao" type="string"> 
      <column name="descricao" length="30" not-null="true" /> 
     </property> 

     <bag name="servicoses" table="servicos" inverse="false" lazy="false" fetch="select" cascade="all,delete-orphan" > 
      <key> 
       <column name="idespecialidade" /> 
      </key> 
      <one-to-many class="model.Servicos" /> 
     </bag> 

      <bag name="profissionais" table="profissional_especialidade"> <!-- inverse="true" lazy="true" fetch="select" --> 
      <key> 
       <column name="idespecialidade" not-null="true" /> 
      </key> 
      <many-to-many entity-name="model.Profissional"> 
       <column name="idusuario" not-null="true" /> 
      </many-to-many> 

     </bag> 
    </class> 
</hibernate-mapping> 

我Profissional.hbm

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated 16/11/2015 11:41:49 by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="model.Profissional" table="profissional" schema="public" optimistic-lock="version"> 
     <id name="idusuario" type="int"> 
      <column name="idusuario" /> 
      <generator class="foreign" > 
       <param name="property">usuario</param> 
      </generator> 
     </id> 
     <one-to-one name="usuario" class="model.Usuario" fetch="select" lazy="false" constrained="true" /> 


     <property name="percentcomissao" type="double"> 
      <column name="percentcomissao" /> 
     </property> 

     <property name="situacao" type="string"> 
      <column name="situacao" length="30" not-null="true" /> 
     </property> 

     <bag name="especialidades" table="profissional_especialidade" lazy="false" > <!-- inverse="false" lazy="true" fetch="select" cascade="all" --> 
      <key> 
       <column name="idusuario" not-null="true"/> 
      </key> 
      <many-to-many entity-name="model.Especialidade"> 
       <column name="idespecialidade" not-null="true" /> 
      </many-to-many> 
     </bag> 
    </class> 
</hibernate-mapping> 

我Especialidade.class

package model; 
// Generated 16/11/2015 11:41:48 by Hibernate Tools 4.3.1 


import java.util.ArrayList; 
import java.util.List; 

/** 
* Especialidade generated by hbm2java 
*/ 
public class Especialidade implements java.io.Serializable { 


    private int idespecialidade; 
    private String descricao; 

    private List servicoses = new ArrayList(); 
    private List<Profissional> profissionais = new ArrayList(); 

    public Especialidade() { 
    } 


    public Especialidade(int idespecialidade, String descricao) { 
     this.idespecialidade = idespecialidade; 
     this.descricao = descricao; 
    } 
    public Especialidade(int idespecialidade, String descricao, List servicoses) { 
     this.idespecialidade = idespecialidade; 
     this.descricao = descricao; 
     this.servicoses = servicoses; 
    } 

    public int getIdespecialidade() { 
     return this.idespecialidade; 
    } 

    public void setIdespecialidade(int idespecialidade) { 
     this.idespecialidade = idespecialidade; 
    } 
    public String getDescricao() { 
     return this.descricao; 
    } 

    public void setDescricao(String descricao) { 
     this.descricao = descricao; 
    } 
    public List<Servicos> getServicoses() { 
     return this.servicoses; 
    } 

    public void setServicoses(List servicoses) { 
     this.servicoses = servicoses; 
    } 

    public void addServicoses(Servicos servico){ 
     this.servicoses.add(servico); 
    } 

    public void removeServicoes(Servicos servico){ 
     this.servicoses.remove(servico); 
    } 

    /** 
    * @return the profissionais 
    */ 
    public List<Profissional> getProfissionais() { 
     return profissionais; 
    } 

    /** 
    * @param profissionais the profissionais to set 
    */ 
    public void setProfissionais(List<Profissional> profissionais) { 
     this.profissionais = profissionais; 
    } 




} 

我Profissional.class

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package model; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* 
* @author vinicius.lemos 
*/ 
public class Profissional implements java.io.Serializable { 
    private int idusuario; 
    private Usuario usuario = new Usuario(); 
    private double percentcomissao; 
    private String situacao; 
    private List<Especialidade> Especialidades = new ArrayList(); 
    /** 
    * @return the idprofissional 
    */ 
    public int getIdusuario() { 
     return idusuario; 
    } 

    /** 
    * @param idusuario the idprofissional to set 
    */ 
    public void setIdusuario(int idusuario) { 
     this.idusuario = idusuario; 
    } 



    /** 
    * @return the percentcomissao 
    */ 
    public double getPercentcomissao() { 
     return percentcomissao; 
    } 

    /** 
    * @param percentcomissao the percentcomissao to set 
    */ 
    public void setPercentcomissao(double percentcomissao) { 
     this.percentcomissao = percentcomissao; 
    } 

    /** 
    * @return the situacao 
    */ 
    public String getSituacao() { 
     return situacao; 
    } 

    /** 
    * @param situacao the situacao to set 
    */ 
    public void setSituacao(String situacao) { 
     this.situacao = situacao; 
    } 

    /** 
    * @return the usuario 
    */ 
    public Usuario getUsuario() { 
     return usuario; 
    } 

    /** 
    * @param usuario the usuario to set 
    */ 
    public void setUsuario(Usuario usuario) { 
     this.usuario = usuario; 
    } 

    /** 
    * @return the Especialidades 
    */ 
    public List<Especialidade> getEspecialidades() { 
     return Especialidades; 
    } 

    /** 
    * @param Especialidades the Especialidades to set 
    */ 
    public void setEspecialidades(List<Especialidade> Especialidades) { 
     this.Especialidades = Especialidades; 
    } 


} 

回答

0

请在下面找到它:

这里是我得到的错误(在提交时刻)点:

@Override 
    public String salvar(Object t) { 
     logger.info("Entrou no genericDao .."); 
     try { 
      logger.info("Abrindo Conexao"); 
      abreConexao(); 
      logger.info("Salvando Objeto"); 
      sessao.save(t); 
      transaction.commit(); 
      sessao.flush(); 
      fechaConexao(); 
      return "Salvo com sucesso"; 
     } catch (ConstraintViolationException e){ 
      return "O registro já existe na base "; 
     } catch (Exception e) { 
      return "Erro ao salvar!" + e.getMessage(); 
     } 

这里是完整的跟踪:

Informações: >>>>>>>http://localhost:8080/salao/faces/restrito/profissionalManter.xhtml 
Informações: Hibernate: select usuario0_.idusuario as idusuari1_5_, usuario0_.idgrupo as idgrupo2_5_, usuario0_.login as login3_5_, usuario0_.senha as senha4_5_, usuario0_.nome as nome5_5_, usuario0_.situacao as situacao6_5_, usuario0_.trocasenha as trocasen7_5_ from public.usuario usuario0_ cross join public.grupo grupo1_ where usuario0_.idgrupo=grupo1_.idgrupo and grupo1_.nome='profissional' order by usuario0_.login 
Informações: Hibernate: select grupo0_.idgrupo as idgrupo1_2_0_, grupo0_.nome as nome2_2_0_ from public.grupo grupo0_ where grupo0_.idgrupo=? 
Informações: Hibernate: select profission0_.idusuario as idusuari1_3_0_, profission0_.percentcomissao as percentc2_3_0_, profission0_.situacao as situacao3_3_0_ from public.profissional profission0_ where profission0_.idusuario=? 
Informações: Hibernate: select usuarios0_.idgrupo as idgrupo2_2_0_, usuarios0_.idusuario as idusuari1_5_0_, usuarios0_.idusuario as idusuari1_5_1_, usuarios0_.idgrupo as idgrupo2_5_1_, usuarios0_.login as login3_5_1_, usuarios0_.senha as senha4_5_1_, usuarios0_.nome as nome5_5_1_, usuarios0_.situacao as situacao6_5_1_, usuarios0_.trocasenha as trocasen7_5_1_ from public.usuario usuarios0_ where usuarios0_.idgrupo=? 
Informações: Hibernate: select usuario0_.idusuario as idusuari1_5_, usuario0_.idgrupo as idgrupo2_5_, usuario0_.login as login3_5_, usuario0_.senha as senha4_5_, usuario0_.nome as nome5_5_, usuario0_.situacao as situacao6_5_, usuario0_.trocasenha as trocasen7_5_ from public.usuario usuario0_ cross join public.grupo grupo1_ where usuario0_.idgrupo=grupo1_.idgrupo and grupo1_.nome='profissional' order by usuario0_.login 
Informações: Hibernate: select grupo0_.idgrupo as idgrupo1_2_0_, grupo0_.nome as nome2_2_0_ from public.grupo grupo0_ where grupo0_.idgrupo=? 
Informações: Hibernate: select profission0_.idusuario as idusuari1_3_0_, profission0_.percentcomissao as percentc2_3_0_, profission0_.situacao as situacao3_3_0_ from public.profissional profission0_ where profission0_.idusuario=? 
Informações: Hibernate: select usuarios0_.idgrupo as idgrupo2_2_0_, usuarios0_.idusuario as idusuari1_5_0_, usuarios0_.idusuario as idusuari1_5_1_, usuarios0_.idgrupo as idgrupo2_5_1_, usuarios0_.login as login3_5_1_, usuarios0_.senha as senha4_5_1_, usuarios0_.nome as nome5_5_1_, usuarios0_.situacao as situacao6_5_1_, usuarios0_.trocasenha as trocasen7_5_1_ from public.usuario usuarios0_ where usuarios0_.idgrupo=? 
Informações: Hibernate: select especialid0_.idespecialidade as idespeci1_1_, especialid0_.descricao as descrica2_1_ from public.especialidade especialid0_ order by especialid0_.descricao 
Informações: Hibernate: select servicoses0_.idespecialidade as idespeci2_1_0_, servicoses0_.idservico as idservic1_4_0_, servicoses0_.idservico as idservic1_4_1_, servicoses0_.idespecialidade as idespeci2_4_1_, servicoses0_.descricao as descrica3_4_1_ from public.servicos servicoses0_ where servicoses0_.idespecialidade=? 
Informações: Hibernate: select servicoses0_.idespecialidade as idespeci2_1_0_, servicoses0_.idservico as idservic1_4_0_, servicoses0_.idservico as idservic1_4_1_, servicoses0_.idespecialidade as idespeci2_4_1_, servicoses0_.descricao as descrica3_4_1_ from public.servicos servicoses0_ where servicoses0_.idespecialidade=? 
Informações: Entrou no menu gravar 
Informações: 2016-02-13 13:51:57 INFO ProfissionalManager:177 - Chamou o Menu Gravar 
Informações: 2016-02-13 13:51:57 INFO ProfissionalManager:179 - acao novo encontrado 
Informações: 2016-02-13 13:51:57 INFO ProfissionalDao:44 - Salvar Profissional.... 
Informações: 2016-02-13 13:51:57 INFO GenericDao:31 - Entrou no genericDao .. 
Informações: 2016-02-13 13:51:57 INFO GenericDao:33 - Abrindo Conexao 
Informações: 2016-02-13 13:51:57 INFO GenericDao:35 - Salvando Objeto 
Informações: Hibernate: insert into public.profissional (percentcomissao, situacao, idusuario) values (?, ?, ?) 
Informações: Hibernate: insert into profissional_especialidade (idusuario, idespecialidade) values (?, ?) 
ERROR: HHH000122: IllegalArgumentException in class: model.Especialidade, getter method of property: idespecialidade 
Informações: Hibernate: select profission0_.idusuario as idusuari1_3_, profission0_.percentcomissao as percentc2_3_, profission0_.situacao as situacao3_3_ from public.profissional profission0_ 
Informações: Hibernate: select profission0_.idusuario as idusuari1_3_, profission0_.percentcomissao as percentc2_3_, profission0_.situacao as situacao3_3_ from public.profissional profission0_ 
Informações: >>>>>> [email protected] 
Informações: >>>>>>>http://localhost:8080/salao/faces/javax.faces.resource/jquery/jquery.js 
Informações: >>>>>>>http://localhost:8080/salao/faces/javax.faces.resource/primefaces.js 
Informações: >>>>>>>http://localhost:8080/salao/faces/javax.faces.resource/jquery/jquery-plugins.js 
Informações: >>>>>>>http://localhost:8080/salao/faces/javax.faces.resource/layout/layout.js