2012-10-16 4 views
0

J'ai application avec plusieurs entité. Lors du déploiement sur JBoss AS7, les exceptions suivantes apparaissent:JBoss Hibernate exception lors du déploiement

Im utilisant l'idée 11.1.3; Ubuntu 12.04; maven 3.0.3 et si nécessaire, je peux montrer le fichier pom du projet.

17:24:00,770 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.persistenceunit."kladr.ear/kladr-ejb-1.0-SNAPSHOT.jar#primary": org.jboss.msc.service.StartException in service jboss.persistenceunit."kladr.ear/kladr-ejb-1.0-SNAPSHOT.jar#primary": Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_35] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_35] 
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_35] 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: primary] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    ... 3 more 
Caused by: org.hibernate.MappingException: Duplicate property mapping of version found in com.kmware.ttk.kladr.model.KladrSettings 
    at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:486) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:476) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:268) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1287) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1729) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 
    ... 9 more 

Voici mon code de classe (sans les importations):

@Entity 
@Table(name = "KLADR_SETTINGS",schema ="KLADR") 
public class KladrSettings extends RQObject implements Serializable{ 
    private static final long serialVersionUID = -8557672721736414960L; 
    private String id; 
    private String url; 
    private String pathName; 
    private String namePackage; 
    private int sizeArchive; 
    private Long version; 

    @Id 
    @Column(name = "KLADR_SETTINGS_ID") 
    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 

    @Column(name = "KLADR_SETTINGS_URL") 
    public String getUrl() { 
     return url; 
    } 
    public void setUrl(String url) { 
     this.url = url; 
    } 

    @Column(name = "KLADR_SETTINGS_PATHNAME") 
    public String getPathName() { 
     return pathName; 
    } 
    public void setPathName(String pathName) { 
     this.pathName = pathName; 
    } 

    @Column(name = "KLADR_SETTINGS_NAMEPACKAGE") 
    public String getNamePackage() { 
     return namePackage; 
    } 
    public void setNamePackage(String namePackage) { 
     this.namePackage = namePackage; 
    } 
    @Column(name = "KLADR_SETTINGS_SIZE_ARCHIVE") 
    public int getSizeArchive() { 
     return sizeArchive; 
    } 
    public void setSizeArchive(int sizeArchive) { 
     this.sizeArchive = sizeArchive; 
    } 

    @Column(name = "KLADR_SETTINGS_VERSION") 
    public Long getVersion() { 
     return version; 
    } 
    public void setVersion(Long version) { 
     this.version = version; 
    } 


    @Override public PortableEntity toPortableEntity(boolean loadCollections, boolean loadNested) { 

     PKladrSettings pentity = new PKladrSettings(getId(), getName(), getVersion(), 
       getDeleted()); 

     pentity.setId(getId()); 
     pentity.setNamePackage(getNamePackage()); 
     pentity.setPathName(getPathName()); 
     pentity.setSizeArchive(getSizeArchive()); 
     pentity.setUrl(getUrl()); 
     pentity.setVersion(getVersion()); 

     return pentity; 

    } 

    @Override public void fromPortable(PortableEntity pentity) { 
     PKladrSettings input = null; 
     if (pentity instanceof PKladrSettings){ 
      input = (PKladrSettings) pentity; 
     } 
     if(input!=null){ 
      this.setId(input.getId()); 
      this.setName(input.getDisplayName()); 
      this.setVersion(input.getVersion()); 
      this.setDeleted(input.isDeleted()); 

      this.setNamePackage(input.getNamePackage()); 
      this.setPathName(input.getPathName()); 
      this.setSizeArchive(input.getSizeArchive()); 
      this.setUrl(input.getUrl()); 

     } 
    } 

    @Override public void loadLazyCollections() { 

    } 
} 

Qu'est-ce que cela signifie duplicate property mapping?

+0

La classe de base RQObject possède-t-elle également une propriété de version? –

+0

Oui. KLadrSettings l'annule –

Répondre

5

Il semble que la propriété private Long version; soit définie à la fois sur la super classe et sur la classe étendue. retirez-le de l'un d'entre eux et cela devrait fonctionner.

+0

Votre réponse m'a été très utile –

+0

Donc je ne peux pas faire quelque chose comme ça: avoir super class avec somePropery + getter/setter, puis étendre cette super classe et dans la sous-classe redéfinir thisProperty à nouveau par exemple pour avoir différents Bean Validation contraintes dans différentes sous-classes dérivant de la même superclasse? –

Questions connexes