2016-07-11 14 views
1

をorm.xml休止するとエラーになります:重複したXMLエントリ|ここで

Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory 
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 
    at ru.leon0399.podius.home.Core.run(Core.java:39) 
    at ru.leon0399.podius.home.Core.main(Core.java:34) 
Caused by: java.lang.IllegalStateException: Duplicate XML entry for ru.leon0399.podius.common.entity.AbstractEntity 
    at org.hibernate.cfg.annotations.reflection.XMLContext.addClass(XMLContext.java:140) 
    at org.hibernate.cfg.annotations.reflection.XMLContext.addDocument(XMLContext.java:108) 
    at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.<init>(AnnotationMetadataSourceProcessorImpl.java:93) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.<init>(MetadataBuildingProcess.java:147) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:141) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:857) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:884) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) 
    ... 4 more 

そして、ここでは私のorm.xmlです:

<?xml version="1.0" encoding="UTF-8"?> 
<entity-mappings 
    xmlns="http://java.sun.com/xml/ns/persistence/orm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm_2_0.xsd" 
    version="2.0"> 
<mapped-superclass class="ru.leon0399.podius.common.entity.AbstractEntity"> 
    <attributes> 
     <id name="uuid"> 
      <column name="uuid" column-definition="BINARY(16)"/> 
     </id> 
     <basic name="createdAt"> 
      <column name="created_at" updatable="false"/> 
      <temporal>TIMESTAMP</temporal> 
     </basic> 
     <basic name="updatedAt"> 
      <column name="updated_at"/> 
      <temporal>TIMESTAMP</temporal> 
     </basic> 
    </attributes> 
</mapped-superclass> 

そして、ここでは私のAbstractEntityクラスは

public abstract class AbstractEntity implements Creatable, Updatable, Entity { 
    private static final long serialVersionUID = 2544875895016856663L; 

    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractEntity.class); 

    private UUID uuid = UUID.randomUUID(); 

    private Date updatedAt; 

    private Date createdAt; 

    // Getters and setters 
} 

ですご覧のとおり、重複はありません

デバッグ後、そのファイルorm.xmlが2回読み込まれました。ここで はこのアイデア

enter image description here

の確認をスクリーンショットで、どのように私は休止状態を伝えることができる二回、このファイルを読んでいませんか?

+0

私は 'AbstractEntity'はMappedSuperclassとしてアノテートされていないと思いますか? – Apostolos

+0

AbstractEntityクラスを表示できますか? – aksappy

+0

@aksappyトピックを更新しました – leon0399

答えて

3

これは、私はまったく同じ問題を抱えていたし、ちょうど私がpersistence.xmlへの参照を削除した場合、その考え出していた古い問題であるが、現在の問題になるだけでなく、私のためだったかもしれない...

orm.xmlファイルの場合、それは起こりません。

<mapping-file>./META-INF/orm.xml</mapping-file>

は私の代わりにorm.xmlmapping.xmlに名前を変更し、それがまた働くpersistence.xmlでそれを再マップまたは場合。

<mapping-file>./META-INF/mapping.xml</mapping-file>

Hibernateは、デフォルトでは、このようなファイル(orm.xml)を探し、persistence.xmlの場合は二回読み込まれてから、すでにそれを言及していることを妨げるものではないようです。

したがって、名前を変更して再マップするか、簡単にpersistence.xmlの参照を削除してください。

関連する問題