当我尝试保存我的对象时,我收到以下错误,该对象在休眠中映射到多个:
IllegalArgumentException in class: model.Especialidade, getter Property 方法: idespecialidade
以下是我的特别资料.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>
我的专业.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>
我的特异.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;
}
}
我的专业.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;
}
}
请在下面找到它:
这是我收到错误的地方(在提交时(:
@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: >>>>>> model.Usuario@62a2d6c9
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