1

コードでエンティティ マネージャーを作成しようとすると、このエラーが発生します。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("puDS1", myproperties);

なぜこれが起こっているのかについてのヒントはありますか? 私のpersistence.xmlは有効なxmlのようです。

ERROR [main] (PersistenceXmlLoader.java:251) - Error parsing XML: XML InputStream(1) Premature end of file.
javax.persistence.PersistenceException: Unable to configure EntityManagerFactory
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:265)
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at org.hibernate.ejb.packaging.PersistenceXmlLoader.loadURL(PersistenceXmlLoader.java:70)
        at org.hibernate.ejb.packaging.PersistenceXmlLoader.deploy(PersistenceXmlLoader.java:89)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:222)
        ... 4 more

永続性 xml は次のようになります。この persistence.xml で Maven リソース フィルタリングを使用しているため、コンパイル時に ${jar_file_name_ds1} と ${jar_file_name_ds2} が有効な名前に置き換えられることに注意してください。最終的な persistence.xml の値が適切に置換されていることを確認しました。Maven リソース フィルタリングが問題を引き起こしているかどうかはわかりません。

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
    <persistence-unit name="puDS1" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jar-file>${jar_file_name_ds1}</jar-file>      
      <properties>         
         <property name="hibernate.max_fetch_depth" value="3"/>
      </properties>
   </persistence-unit>   
   <persistence-unit name="puDS2" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jar-file>${jar_file_name_ds2}</jar-file>
      <properties>
         <property name="hibernate.max_fetch_depth" value="3"/>
      </properties>
   </persistence-unit>   
</persistence>
4

1 に答える 1

1

問題は、コードがインターネットに接続しようとしていたことでした (xsd を取得して persistence.xml を検証すると思います)。マシンをインターネットに接続すると、動作し始めました。インターネットに接続する必要がないように、この問題を克服しようとしていますが、それは別の問題です。

于 2013-04-17T05:51:06.477 に答える