Hibernate-JPA без сопоставления классов XML - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я изучаю Hibernate и JPA, и я наткнулся на следующую проблему:

У меня есть класс сущностей с именем User, и этот класс аннотирован с помощью аннотации @Entity (JPA).В моем persistence.xml файле НЕ есть сопоставление для него, но я могу без проблем использовать его на своем EntityManager.

Я только что создал другую сущность, которая называется Comment (некоторые пакеты ниже),этот также помечен @Entity и также НЕ в моем persistence.xml файле.Однако в этом случае выдается исключение org.hibernate.MappingException: Unknown entity при использовании в EntityManager.

Мой файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
  http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="net.notfab.hibernatetest" transaction-type="RESOURCE_LOCAL">
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <!-- JPA Properties -->
            <property name="javax.persistence.provider" value="org.hibernate.jpa.HibernatePersistenceProvider"/>
            <property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url"
                      value="jdbc:mariadb://IP:PORT...."/>
            <property name="javax.persistence.jdbc.user" value=""/>
            <property name="javax.persistence.jdbc.password" value=""/>

            <!-- Hibernate Properties -->
            <property name="hibernate.connection.provider_class"
                      value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MariaDBDialect"/>
            <property name="hibernate.connection.CharSet" value="utf8mb4_bin"/>
            <property name="hibernate.connection.characterEncoding" value="utf8mb4_bin"/>
            <property name="hibernate.connection.useUnicode" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.archive.autodetection" value="class, hbm" />

            <!-- Hikari Properties -->
            <property name="hibernate.hikari.minimumIdle" value="5"/>
            <property name="hibernate.hikari.maximumPoolSize" value="10"/>
            <property name="hibernate.hikari.idleTimeout" value="15000"/>
            <property name="hibernate.hikari.leakDetectionThreshold" value="30000"/> <!-- 30 Seconds -->
            <property name="hibernate.hikari.poolName" value="TestPool"/>
        </properties>
    </persistence-unit>
</persistence>

Что может вызывать это странное поведение?

Есть ли способ для меня, чтобы продолжать использовать аннотированные классы без необходимости объявлять их в файле XML?(Уже 2018 год - аннотации намного лучше!).

Примечание: Этот вопрос похож, но их конечной целью в конечном итоге стало отображение XML, которого я стараюсь избежатьвсе средства.Я также ищу объяснение вышеупомянутому поведению.

Редактировать: По просьбе комментариев, здесь полная трассировка стека https://hastebin.com/haguniheca.cs (а также здесь https://hasteb.in/ipuzojoc.cs на случай, если hastebin снова выйдет из строя).

В этом сценарии я не использую Spring.

Edit 2: Здесь - это моя сущность.

Редактировать 3: Это простой проект, выполняющийся из автономного (затененного) файла JAR на Java SE, в настоящее время использующий следующий список зависимостей для сохранения (среди прочего):

compile group: 'org.hibernate', name: 'hibernate-hikaricp', version: '5.3.3.Final'
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.2.6'

Редактировать 4В соответствии с комментарием Ойгена я провел некоторое тестирование, и причина проблемы, кажется, в IntelliJ.При запуске затененного файла JAR самостоятельно из командной строки проблема устраняется.(Может быть, путь к классу отличается при запуске отладки приложения?).Тогда возникает вопрос: «Как я могу исправить конфигурацию запуска IntelliJ для моего приложения?».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...