Как настроить TomEE и JPA - PullRequest
1 голос
/ 24 апреля 2019

извините за мой плохой английский, (я французский :-D). Я хочу работать с TomEE для JPA, но моя конфигурация плохая, я думаю. Я получаю исключение при попытке подключиться к моей базе данных (Mysql).

persistence.xml

<persistence-unit name="elevage" transaction-type="JTA">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>elevage</jta-data-source>
    <non-jta-data-source>elevageUnmanaged</non-jta-data-source>

    <class>com.test.ejb.BeanAnimal</class>

    <properties>

        <property name="openjpa.jdbc.DBDictionary" value="mysql" />
        <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
    </properties>

</persistence-unit>

tomee.xml

<Resource id="elevage" type="DataSource">
    JdbcDriver          com.mysql.jdbc.Driver
    JdbcUrl             jdbc:mysql://localhost:3306/elevage2?useLegacyDatetimeCode=false&amp;serverTimezone=Australia/Sydney&amp;useSSL=false
    UserName            root
    Password            pass
    JtaManaged          true
    DefaultAutoCommit   false
</Resource>

<Resource id="elevageUnmanaged" type="DataSource">
    JdbcDriver          com.mysql.jdbc.Driver
    JdbcUrl             jdbc:mysql://localhost:3306/elevage2?useLegacyDatetimeCode=false&amp;serverTimezone=Australia/Sydney&amp;useSSL=false
    UserName            root
    Password            pass
    JtaManaged          false
</Resource>

Исключение

AVERTISSEMENT: Unexpected exception from beforeCompletion; transaction will roll back 
<openjpa-2.4.1-r422266:1730418 fatal general error> org.apache.openjpa.persistence.PersistenceException: user lacks privilege or object not found: OPENJPA_SEQUENCE_TABLE {SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE} [code=-5501, state=42501]

Запрос "ВЫБРАТЬ", и я хочу взять все данные в моей базе данных. Я вижу документацию, но проблема не устранена.

Спасибо всем за ваш ответ! (если вам нужно больше файлов, скажите мне :-))

1 Ответ

0 голосов
/ 25 апреля 2019

После долгого разрыва волос я нашел решение, если оно может сэкономить время, вот оно:

2 Конфигурации!

В разработке:

tomee.xml не используется, необходимо настроить openejb.xml , путь которого указан в консоли eclipse, обратите внимание, доступ осуществляется по скрытому файлу

Путь к моей машине (Linux):

 /home/user/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/conf/openejb.xml

В нижней части файла находится раздел «Ресурс», конфигурация идентична tomee.xml (вы можете найти документациюпо этому адресу: документация для конфигурации tomee.xml

В производстве:

мы забываем openejb.xml , aКонфигурация идентична, но в tomee.xml

до конца, вот моя конфигурация:

persistence.xml

<persistence version="2.0" 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">

<persistence-unit name="elevage" transaction-type="JTA">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>MyDataBase</jta-data-source>
    <non-jta-data-source>MyDataBaseUnmanaged</non-jta-data-source>

    <class>com.test.ejb.BeanAnimal</class>
    <!-- <class>com.test.ejb.BeanUser</class>-->


    <properties>
        <property name="openjpa.jdbc.DBDictionary" value="mysql" />
        <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
    </properties>

</persistence-unit>

openejb.xml (в разработке) и tomee.xml (в разработке)

<Resource id="MyDataBase" type="DataSource">
    JdbcDriver com.mysql.jdbc.Driver
    JdbcUrl jdbc:mysql://localhost:3306/elevage?useLegacyDatetimeCode=false&amp;serverTimezone=Australia/Sydney&amp;useSSL=false
    UserName root
    Password pass
    JtaManaged true
</Resource>

<Resource id="MyDataBaseUnmanaged" type="DataSource">
    JdbcDriver com.mysql.jdbc.Driver
    JdbcUrl jdbc:mysql://localhost:3306/elevage?useLegacyDatetimeCode=false&amp;serverTimezone=Australia/Sydney&amp;useSSL=false
    UserName root
    Password pass
    JtaManaged false
</Resource>
...