NPE во время создания entityiManagerFactory - PullRequest
1 голос
/ 01 августа 2020

Попытка добавить JPA / Hibernate в мой проект без Spring всегда видит NPE. Мой pom:

<properties>
    <maven.compiler.source>14</maven.compiler.source>
    <maven.compiler.target>14</maven.compiler.target>
    <hibernate-version>6.0.0.Alpha5</hibernate-version>
</properties>
org.junit.jupiter junit-jupiter-api 5.6.2 test org.projectlombok lombok 1.18.12 при условии
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.28</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.13.2</version>
   </dependency>

   <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
   <dependency>
       <groupId>com.h2database</groupId>
       <artifactId>h2</artifactId>
       <version>1.4.200</version>
       <scope>test</scope>
   </dependency>
   <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-entitymanager</artifactId>
       <version>${hibernate-version}</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
   <dependency>
       <groupId>org.hibernate.javax.persistence</groupId>
       <artifactId>hibernate-jpa-2.1-api</artifactId>
       <version>1.0.2.Final</version>
   </dependency>

Вот настойчивость. xml: упорство

Мой класс репозитория:

    public class PlaceJpaRepository implements IPlaceRepository {
      EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory( 
      "com.senla.carservice.jpa.hibernate" );
      EntityManager manager = entityManagerFactory.createEntityManager();

    **Bunch of CRUD methods**
 }

Класс сущности:

@Data
@Entity
@NoArgsConstructor
public class Place {
    @Id
    @GeneratedValue
    private UUID id;
    @Embedded
    private Calendar calendar;


    public Place(Calendar calendar) {
        this.id = UUID.randomUUID();
        this.calendar = calendar;

    }

}

После создания PlaceJpaRepository он падает с NPE на

Persistence.createEntityManagerFactory( 
          "com.senla.carservice.jpa.hibernate" );

Stacktrace:

java.lang.NullPointerException
    at org.hibernate.boot.model.process.internal.InferredBasicValueResolver.from(InferredBasicValueResolver.java:140)
    at org.hibernate.mapping.BasicValue.buildResolution(BasicValue.java:384)
    at org.hibernate.mapping.BasicValue.resolve(BasicValue.java:247)
    at org.hibernate.mapping.BasicValue.resolve(BasicValue.java:238)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.lambda$processValueResolvers$1(InFlightMetadataCollectorImpl.java:1682)
    at java.base/java.util.ArrayList.removeIf(ArrayList.java:1681)
    at java.base/java.util.ArrayList.removeIf(ArrayList.java:1659)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processValueResolvers(InFlightMetadataCollectorImpl.java:1681)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1667)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:281)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1217)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1248)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at com.senla.carservice.domain.repository.jpa.PlaceJpaRepository.<init>(PlaceJpaRepository.java:18)
    at TestJpaRepo.testAdd(TestJpaRepo.java:17)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

После того, как я вошел во встроенную базу консоли, регистратор показывает сообщение:

База данных может уже использоваться: null. Возможные решения: закройте все остальные соединения; использовать режим сервера

После выхода из системы приложение выдает NPE как обычно. Есть предложения?

1 Ответ

0 голосов
/ 03 августа 2020

Реальной проблемой была версия гибернации. После перехода на 5.4.12 работает исправно.

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