Bom dia pessoal!
Estou passando pelo seguinte problema. Tenho tres classes que estao mapeadas conforme abaixo:
@Entity
@Table(name="TBPERMISSAO_EMISSOR_CTE")
public class TbpermissaoEmissorCte implements Serializable {
@EmbeddedId
private TbpermissaoEmissorCtePK pk;
@ManyToOne
@JoinColumn(name="CD_SITUACAO_CADASTRAL")
private SituacaoCadastral cdSituacaoCadastral;
@Column(name="NM_EMISSOR")
private String nmEmissor;
@Column(name="SINCRONIZADO_AN")
private String sincronizadoAn;
@Column(name="SITUACAO_BLOQUEIO")
private String situacaoBloqueio;
private String nsucne;
@OneToMany(mappedBy="tbpermissaoEmissorCte")
private Set<Tbinutilizacao> tbinutilizacaoCollection;
@OneToMany(mappedBy="tbpermissaoEmissorCte")
private Set<TbhistBloqueioRecfCte> tbhistBloqueioRecfCteCollection;
@OneToMany(mappedBy="tbpermissaoEmissorCte")
private Set<TbHistObrigatoriedadeCte> tbhistObrigatoriedadeCteCollection;
@OneToMany(mappedBy="tbpermissaoEmissorCte")
private Set<TbmodalEmissor> tbmodalEmissors;
private static final long serialVersionUID = 1L;
public TbpermissaoEmissorCte() {
super();
}
/***Construtor***/
public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
SituacaoCadastral cdSituacaoCadastral, String nmEmissor,
Set<Tbinutilizacao> tbinutilizacaoCollection) {
super();
this.pk = pk;
this.cdSituacaoCadastral = cdSituacaoCadastral;
this.nmEmissor = nmEmissor;
this.tbinutilizacaoCollection = tbinutilizacaoCollection;
}
public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
SituacaoCadastral cdSituacaoCadastral, String nmEmissor) {
super();
this.pk = pk;
this.cdSituacaoCadastral = cdSituacaoCadastral;
this.nmEmissor = nmEmissor;
}
/**
* Construtor que seria usado pelo CTE_INTEGRACAO, pois tem os campos
* prorpios do mesmo: NSUCNE,SINCRONIZADO_AN,SITUACAO_BLOQUEIO
* @04/11/2009
* @denize.lopes
*/
public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
SituacaoCadastral cdSituacaoCadastral, String nmEmissor,
String nsuCNE, String sincrozinadoAN, String situacaoBloqueio) {
super();
this.pk = pk;
this.cdSituacaoCadastral = cdSituacaoCadastral;
this.nmEmissor = nmEmissor;
this.nsucne = nsuCNE;
this.sincronizadoAn = sincrozinadoAN;
this.situacaoBloqueio = situacaoBloqueio;
}
/***Construtor***/
public TbpermissaoEmissorCtePK getPk() {
return this.pk;
}
public void setPk(TbpermissaoEmissorCtePK pk) {
this.pk = pk;
}
public SituacaoCadastral getCdSituacaoCadastral() {
return this.cdSituacaoCadastral;
}
public void setCdSituacaoCadastral(SituacaoCadastral cdSituacaoCadastral) {
this.cdSituacaoCadastral = cdSituacaoCadastral;
}
public String getNmEmissor() {
return this.nmEmissor;
}
public void setNmEmissor(String nmEmissor) {
this.nmEmissor = nmEmissor;
}
public String getSincronizadoAn() {
return this.sincronizadoAn;
}
public void setSincronizadoAn(String sincronizadoAn) {
this.sincronizadoAn = sincronizadoAn;
}
public String getSituacaoBloqueio() {
return this.situacaoBloqueio;
}
public void setSituacaoBloqueio(String situacaoBloqueio) {
this.situacaoBloqueio = situacaoBloqueio;
}
public String getNsucne() {
return this.nsucne;
}
public void setNsucne(String nsucne) {
this.nsucne = nsucne;
}
public Set<Tbinutilizacao> getTbinutilizacaoCollection() {
return this.tbinutilizacaoCollection;
}
public void setTbinutilizacaoCollection(Set<Tbinutilizacao> tbinutilizacaoCollection) {
this.tbinutilizacaoCollection = tbinutilizacaoCollection;
}
public Set<TbhistBloqueioRecfCte> getTbhistBloqueioRecfCteCollection() {
return this.tbhistBloqueioRecfCteCollection;
}
public void setTbhistBloqueioRecfCteCollection(Set<TbhistBloqueioRecfCte> tbhistBloqueioRecfCteCollection) {
this.tbhistBloqueioRecfCteCollection = tbhistBloqueioRecfCteCollection;
}
public Set<TbHistObrigatoriedadeCte> getTbhistObrigatoriedadeCteCollection() {
return this.tbhistObrigatoriedadeCteCollection;
}
public void setTbhistObrigatoriedadeCteCollection(Set<TbHistObrigatoriedadeCte> tbhistObrigatoriedadeCteCollection) {
this.tbhistObrigatoriedadeCteCollection = tbhistObrigatoriedadeCteCollection;
}
public Set<TbmodalEmissor> getTbmodalEmissors() {
return tbmodalEmissors;
}
public void setTbmodalEmissors(Set<TbmodalEmissor> tbmodalEmissors) {
this.tbmodalEmissors = tbmodalEmissors;
}
}
@Entity
@Table(name="TBMODAL_EMISSOR")
public class TbmodalEmissor implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private TbmodalEmissorPK pk;
private String nsucne;
@Column(name="SINCRONIZADO_AN")
private String sincronizadoAn;
//bi-directional many-to-one association to Tbmodal
@ManyToOne
@JoinColumn(name="CD_MODAL")
private Tbmodal tbmodal;
//bi-directional many-to-one association to TbpermissaoEmissorCte
@ManyToOne
@JoinColumns({
@JoinColumn(name="IE", referencedColumnName="IE_EMISSOR"),
@JoinColumn(name="CNPJ", referencedColumnName="CNPJ_EMISSOR"),
})
private TbpermissaoEmissorCte tbpermissaoEmissorCte;
public TbmodalEmissor() {
}
public TbmodalEmissorPK getPk() {
return pk;
}
public void setPk(TbmodalEmissorPK pk) {
this.pk = pk;
}
public String getNsucne() {
return this.nsucne;
}
public void setNsucne(String nsucne) {
this.nsucne = nsucne;
}
public String getSincronizadoAn() {
return this.sincronizadoAn;
}
public void setSincronizadoAn(String sincronizadoAn) {
this.sincronizadoAn = sincronizadoAn;
}
public Tbmodal getTbmodal() {
return this.tbmodal;
}
public void setTbmodal(Tbmodal tbmodal) {
this.tbmodal = tbmodal;
}
public TbpermissaoEmissorCte getTbpermissaoEmissorCte() {
return this.tbpermissaoEmissorCte;
}
public void setTbpermissaoEmissorCte(TbpermissaoEmissorCte tbpermissaoEmissorCte) {
this.tbpermissaoEmissorCte = tbpermissaoEmissorCte;
}
}
@Embeddable
public class TbmodalEmissorPK implements Serializable {
// ------------------------------------- variaveis instancia ----------------------------------------------
// default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name = "IE_EMISSOR")
private String ieEmissor;
@Column(name = "CNPJ_EMISSOR")
private String cnpjEmissor;
@Column(name = "CD_MODAL")
private long cdModal;
// ------------------------------------- construtores ----------------------------------------------
public TbmodalEmissorPK(String ieEmissor, String cnpjEmissor, long codModal) {
super();
this.ieEmissor = ieEmissor;
this.cnpjEmissor = cnpjEmissor;
this.cdModal = codModal;
}
// ------------------------------------- metodos publicos -------------------------------------------
public TbmodalEmissorPK() {
}
public String getIeEmissor() {
return this.ieEmissor;
}
public void setIeEmissor(String ieEmissor) {
this.ieEmissor = ieEmissor;
}
public String getCnpjEmissor() {
return this.cnpjEmissor;
}
public void setCnpjEmissor(String cnpjEmissor) {
this.cnpjEmissor = cnpjEmissor;
}
public long getCdModal() {
return this.cdModal;
}
public void setCdModal(long cdModal) {
this.cdModal = cdModal;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof TbmodalEmissorPK)) {
return false;
}
TbmodalEmissorPK castOther = (TbmodalEmissorPK) other;
return this.ieEmissor.equals(castOther.ieEmissor)
&& this.cnpjEmissor.equals(castOther.cnpjEmissor)
&& (this.cdModal == castOther.cdModal);
}
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.ieEmissor.hashCode();
hash = hash * prime + this.cnpjEmissor.hashCode();
hash = hash * prime + ((int) (this.cdModal ^ (this.cdModal >>> 32)));
return hash;
}
}
porém, quando subo o jboss, ocorre o seguinte erro :
08:40:25,421 WARN [ServiceController] Problem starting service persistence.units:ear=DFeCTe-0_0_0.ear,unitName=CTE_HIBERNATE
javax.persistence.PersistenceException: org.hibernate.MappingException: Repeated column in mapping for entity: br.inf.portalfiscal.ctepersistencia.vo.TbmodalEmissor column: CD_MODAL (should be mapped with insert=“false” update=“false”)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:127)
at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:246)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.ejb3.ServiceDelegateWrapper.startService(ServiceDelegateWrapper.java:103)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:417)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy57.start(Unknown Source)
at org.jboss.ejb3.JmxKernelAbstraction.install(JmxKernelAbstraction.java:120)
at org.jboss.ejb3.Ejb3Deployment.startPersistenceUnits(Ejb3Deployment.java:627)
at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:351)
at org.jboss.ejb3.Ejb3Module.startService(Ejb3Module.java:91)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:417)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy34.start(Unknown Source)
at org.jboss.ejb3.EJB3Deployer.start(EJB3Deployer.java:512)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy35.start(Unknown Source)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy10.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:417)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy4.start(Unknown Source)
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:304)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy5.deploy(Unknown Source)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
at org.jboss.Main.boot(Main.java:200)
at org.jboss.Main$1.run(Main.java:508)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: br.inf.portalfiscal.ctepersistencia.vo.TbmodalEmissor column: CD_MODAL (should be mapped with insert=“false” update=“false”)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:652)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:674)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:696)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:450)
at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1102)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
… 145 more
Alguem poderia me ajudar?
Att,
donatinho :shock:
coloque essa anotação nesse campo
@ManyToOne
@JoinColumn(name="CD_MODAL" insert="false" update="false")
private Tbmodal tbmodal;
Como o dcorteztec falou, um dos atributos que contém a anotação da coluna CD_MODAL precisa ser marcado com insertable=false e updatable=false. Isso acontece por que na PK você já definiu esse atributo, e o Hibernate tentaria atualizá-lo em dois pontos. Não seria algo muito consistente.
Isso vai acontecer praticamente sempre que você precisar utilizar uma associação ManyToOne numa PK. Vc acaba usando só o código da FK na classe PK e depois bota a relação ManyToOne não atualizável na classe.