Hibernate / JPA не создает таблицы - PullRequest
0 голосов
/ 07 марта 2019

Я использую приложение Java EE на Wildfly 15.0.1.Я пытаюсь использовать JPA без создания источника данных на wildfly, потому что я хочу, чтобы все зависимости были упакованы в исходный код приложения.Я использую Maven для построения WAR.

Я использую PostgreSQL, и он запущен на http://localhost:5432 Я создаю db под названием testing для этого проекта.

Итак, я добавилэта зависимость от моего pom.xml:

<dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.5</version>
    </dependency>

Мой файл persistence.xml находится в src/main/resources/META-INF/persistence.xml:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.2"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="pu1">
    <!-- classes -->
    <class>myapp.model.Address</class>
    <class>myapp.model.Transaction</class>
    <properties>
        <!-- database connection -->
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/testing" />
        <property name="javax.persistence.jdbc.user" value="postgres" />
        <property name="javax.persistence.jdbc.password" value="postgres" />

        <!-- hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create"/>
    </properties>
</persistence-unit>

У меня @ Entity аннотации для моих классов Address и Transaction.Но ничего не происходит.Вот фрагмент журнала:

22:58:05,759 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 103) HHH000204: Processing PersistenceUnitInfo [
    name: pu1
    ...]
22:58:05,760 INFO  [org.jboss.weld.deployer] (MSC service thread 1-5) WFLYWELD0003: Processing weld deployment myapp.backend-1.0.war
22:58:05,791 WARN  [org.jboss.as.jaxrs] (MSC service thread 1-3) WFLYRS0018: Explicit usage of Jackson annotation in a JAX-RS deployment; the system will disable JSON-B processing for the current deployment. Consider setting the 'resteasy.preferJacksonOverJsonB' property to 'false' to restore JSON-B.
22:58:05,796 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 42.2)
22:58:05,810 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-8) WFLYJCA0018: Started Driver service with driver-name = myapp.backend-1.0.war_org.postgresql.Driver_42_2
22:58:05,816 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 103) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'myapp.backend-1.0.war#pu1'
22:58:05,817 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 103) HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL94Dialect
22:58:05,820 INFO  [org.hibernate.type.BasicTypeRegistry] (ServerService Thread Pool -- 103) HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@6543510a
22:58:05,822 INFO  [org.hibernate.envers.boot.internal.EnversServiceImpl] (ServerService Thread Pool -- 103) Envers integration enabled? : true
22:58:05,858 INFO  [org.hibernate.tool.schema.internal.SchemaCreatorImpl] (ServerService Thread Pool -- 103) HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@4cc01a34'
22:58:05,858 INFO  [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (ServerService Thread Pool -- 103) HHH000397: Using ASTQueryTranslatorFactory

1 Ответ

1 голос
/ 07 марта 2019

JPA спецификация:

8.2.1.2 тип транзакции

Атрибут типа транзакции используется, чтобы указать, является ли объект менеджеры, предоставляемые менеджером предприятия для сохранения единица должна быть менеджерами сущностей JTA или локальными менеджерами сущностей ресурсов. Значением этого элемента является JTA или RESOURCE_LOCAL. Тип транзакции JTA предполагает, что будет предоставлен источник данных JTA - либо как определяется элементом jta-data-source или предоставляется контейнером. Как правило, в средах Java EE тип транзакции RESOURCE_LOCAL предполагает, что будет предоставлен источник данных, отличный от JTA. В среда Java EE, если этот элемент не указан, по умолчанию это JTA. В среде Java SE, если этот элемент не указан, по умолчанию используется RESOURCE_LOCAL.

JTA является типом транзакции по умолчанию на сервере приложений EE. Чтобы использовать его, вам нужен источник данных, настроенный в WildFly. Затем добавьте его в файл persistence.xml:

<persistence-unit name="pu1" transaction-type="JTA">
    <!-- classes -->
    <class>myapp.model.Address</class>
    <class>myapp.model.Transaction</class>
    <properties>
        <jta-data-source>jdbc/jndi_name_of_datasource</jta-data-source>

        <!-- hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create"/>
    </properties>
</persistence-unit>
...