Попытка добавить 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 как обычно. Есть предложения?