OpenJPA + MySQL проблема - PullRequest
       5

OpenJPA + MySQL проблема

0 голосов
/ 13 марта 2012

Я использую OpenJPA с MySQL.Вот мой файл persistence.xml.

<?xml version="1.0" encoding="UTF-8"?>
<!--
  For DB connectivity  
   -->
      <persistence version="1.0">
        <persistence-unit name="jpa">
          <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
           <class>com.Login</class>
       </persistence-unit>

       <properties>
     <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/jpa"/>
          <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
      <property name="openjpa.ConnectionUserName" value="root"/>
      <property name="openjpa.ConnectionPassword" value="root"/>
      <property name="openjpa.jdbc.DBDictionary"  value="mysql(SimulateLocking=true)"/>
    <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
</properties>

      </persistence>

Когда я выполняю свой класс Java, я получаю исключение, которое приведено ниже.Тот же код работает нормально, если я использую hibernate и меняю конфигурацию в persistence.xml, но он не работает в OpenJPA.Кто-нибудь может помочь решить это?

Exception in thread "main" javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "jpa" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
    at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
    at com.JPALogin.main(JPALogin.java:26)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/E:/work/JPAPlain/build/classes/META-INF/persistence.xml [Location: Line: 5, C: 28]: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'persistence'.
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
    at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
    ... 2 more

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Как насчет того, чтобы попробовать что-то подобное?

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <!-- For DB connectivity -->
    <persistence-unit name="jpa">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <class>com.Login</class>
        <properties>
            <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/jpa" />
            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
                    <property name="openjpa.ConnectionUserName" value="root" />
                    <property name="openjpa.ConnectionPassword" value="root" />
                    <property name="openjpa.jdbc.DBDictionary" value="mysql(SimulateLocking=true)" />
                    <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
                </properties>
    </persistence-unit>
</persistence>
0 голосов
/ 13 марта 2012

SAXParseException: cvc-elt.1: не удается найти объявление элемента 'постоянство'. в org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource

Я не могу быть уверен, но похоже, что анализатор XML вашего persistence.xml файла пытается проверить XML на соответствие DTD, и он жалуется, потому что не может получить (полезный) DTD. Возможно, вы захотите изменить первую строку вашего XML-файла следующим образом:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Я бы не ожидал, что неверный XML-файл или отсутствующий DTD вызовут сбой синтаксического анализатора с загадочным исключением. Так что, если это является причиной проблемы, я бы сказал, что в коде поставщика постоянства есть ошибка. Я ожидаю более полезное исключение с сообщением «недопустимый XML» или чем-то подобным.

...