2016-04-12 7 views
1

In meinem Programm Ich habe folgende Einheit:Doppelte Eigenschaft Mapping verursacht JPA viele zu viele - eins zu mehreren Selbst auf Wildfly9 Join

@Entity 
@Table(name="ta_seg_perfiles") 
@NamedQuery(name="Perfil.findAll", query="SELECT p FROM Perfil p") 
public class Perfil implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column(unique=true, nullable=false) 
    private int id; 

    @Column(nullable=false) 
    private String perfil; 

    @Column(nullable=false) 
    private String descripcion; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name="fecha_alta") 
    private Date fechaAlta; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name="fecha_modificado") 
    private Date fechaModificado; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name="fecha_baja") 
    private Date fechaBaja; 

    @Column(nullable=false, length=15) 
    private String auditor; 

    @OneToMany 
    @JoinTable(
      name="ta_seg_perfiles_perfiles", 
      joinColumns={@JoinColumn(name="perfil", referencedColumnName ="perfil")}, 
      inverseJoinColumns={@JoinColumn(name="perfil_asig", referencedColumnName="perfil")} 
      ) 
    private Collection<Perfil> perfilesAsignados; 


    @ManyToMany(fetch=FetchType.LAZY) 
    @JoinTable(
      name="ta_seg_perfiles_funciones", 
      [email protected](name="perfil", referencedColumnName="perfil"), 
      [email protected](name="funcion", referencedColumnName="funcion", nullable=false, insertable=false, updatable=false) 
      ) 
    private Collection<Funcion> funciones; 

    @OneToMany(mappedBy="perfil") 
    private Collection<PermisosFuncion> permisosFunciones; 

    @OneToMany(mappedBy="perfil") 
    private Collection<PermisosPagina> permisosPaginas; 


    public Perfil() { 
    } 


    public int getId() { 
     return id; 
    } 


    public void setId(int id) { 
     this.id = id; 
    } 


    public String getPerfil() { 
     return perfil; 
    } 


    public void setPerfil(String perfil) { 
     this.perfil = perfil; 
    } 


    public String getDescripcion() { 
     return descripcion; 
    } 


    public void setDescripcion(String descripcion) { 
     this.descripcion = descripcion; 
    } 


    public Date getFechaAlta() { 
     return fechaAlta; 
    } 


    public void setFechaAlta(Date fechaAlta) { 
     this.fechaAlta = fechaAlta; 
    } 


    public Date getFechaModificado() { 
     return fechaModificado; 
    } 


    public void setFechaModificado(Date fechaModificado) { 
     this.fechaModificado = fechaModificado; 
    } 


    public Date getFechaBaja() { 
     return fechaBaja; 
    } 


    public void setFechaBaja(Date fechaBaja) { 
     this.fechaBaja = fechaBaja; 
    } 


    public String getAuditor() { 
     return auditor; 
    } 


    public void setAuditor(String auditor) { 
     this.auditor = auditor; 
    } 


    public Collection<Perfil> getPerfilesAsignados() { 
     return perfilesAsignados; 
    } 


    public void setPerfilesAsignados(Collection<Perfil> perfilesAsignados) { 
     this.perfilesAsignados = perfilesAsignados; 
    } 


    public Collection<Funcion> getFunciones() { 
     return funciones; 
    } 


    public void setFunciones(Collection<Funcion> funciones) { 
     this.funciones = funciones; 
    } 


    public Collection<PermisosFuncion> getPermisosFunciones() { 
     return permisosFunciones; 
    } 


    public void setPermisosFunciones(Collection<PermisosFuncion> permisosFunciones) { 
     this.permisosFunciones = permisosFunciones; 
    } 


    public Collection<PermisosPagina> getPermisosPaginas() { 
     return permisosPaginas; 
    } 


    public void setPermisosPaginas(Collection<PermisosPagina> permisosPaginas) { 
     this.permisosPaginas = permisosPaginas; 
    } 


    /** 
    * @param arg0 
    * @return 
    * @see java.util.Collection#add(java.lang.Object) 
    */ 
    public Funcion addFuncion(Funcion funcion) { 
     this.getFunciones().add(funcion); 
     return funcion; 
    } 


    /** 
    * @param arg0 
    * @return 
    * @see java.util.Collection#remove(java.lang.Object) 
    */ 
    public Funcion removeFuncion(Funcion funcion) { 
     this.getFunciones().remove(funcion); 
     return funcion; 
    } 

    public Perfil addPerfilAsignado(Perfil perfil){ 
     this.getPerfilesAsignados().add(perfil); 
     return perfil; 
    } 

    public Perfil removePerfilAsignado(Perfil perfil){ 
     this.getPerfilesAsignados().add(perfil); 
     return perfil; 
    } 

    public PermisosFuncion addPermisosFuncion(PermisosFuncion permisos){ 
     this.getPermisosFunciones().add(permisos); 
     return permisos; 
    } 

    public PermisosFuncion removePermisosFuncion(PermisosFuncion permisos){ 
     this.getPermisosFunciones().remove(permisos); 
     permisos.setPerfil(this); 
     return permisos; 
    } 

    public PermisosPagina addPermisosPagina(PermisosPagina permisos){ 
     this.getPermisosPaginas().add(permisos); 
     permisos.setPerfil(null); 
     return permisos; 
    } 

Wich, soweit ich keinen Fehler hat berichten. Allerdings, wenn ich die Anwendung auf meinem lokalen Wildfly9 Server bereitstellen es wirft mich die folgende Ausnahme:

15:14:48,270 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 288) MSC000001: Failed to start service jboss.persistenceunit."Acumar.ear#Acumar-JPA": org.jboss.msc.service.StartException in service jboss.persistenceunit."Acumar.ear#Acumar-JPA": javax.persistence.PersistenceException: [PersistenceUnit: Acumar-JPA] Unable to build Hibernate SessionFactory 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) 
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:665) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: Acumar-JPA] Unable to build Hibernate SessionFactory 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1249) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.access$600(EntityManagerFactoryBuilderImpl.java:120) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:860) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849) 
    at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) 
    ... 7 more 
Caused by: org.hibernate.MappingException: Duplicate property mapping of _ar_asimov_acumar_entidades_seguridad_Perfil_perfilesAsignados found in ar.asimov.acumar.entidades.seguridad.Perfil 
    at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:515) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:505) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1360) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1851) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) 
    ... 12 more 

Kann mir jemand sagen, was mache ich falsch bzw. wie kann ich dieses Problem beheben? Vielen Dank.

+0

Könnte es das gleiche Problem sein, das hier erwähnt wird http://stackoverflow.com/questions/25708724/how-to-fix-duplicate-property-mapping-exception in Bezug auf https://hibernate.atlassian.net/browse/ HHH-5836 und – Chris

Antwort

0

Ich glaube, Sie haben diese Zeile zweimal:

[email protected](name="funcion", referencedColumnName="funcion"), 

:

[email protected](name="perfil", referencedColumnName="perfil"), 

Im zweiten Fall sollte es nicht entlang der Linien von mehr sein?