diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/aot/generated/AotMetaModel.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/aot/generated/AotMetaModel.java deleted file mode 100644 index 797e7a45a..000000000 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/aot/generated/AotMetaModel.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2024-2025 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.jpa.repository.aot.generated; - -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityManagerFactory; -import jakarta.persistence.metamodel.EmbeddableType; -import jakarta.persistence.metamodel.EntityType; -import jakarta.persistence.metamodel.ManagedType; -import jakarta.persistence.metamodel.Metamodel; -import jakarta.persistence.spi.ClassTransformer; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.hibernate.jpa.HibernatePersistenceProvider; -import org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl; -import org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor; -import org.springframework.data.util.Lazy; -import org.springframework.instrument.classloading.SimpleThrowawayClassLoader; -import org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo; - -/** - * @author Christoph Strobl - */ -class AotMetaModel implements Metamodel { - - private final String persistenceUnit; - private final Set> managedTypes; - private final Lazy entityManagerFactory = Lazy.of(this::init); - private final Lazy metamodel = Lazy.of(() -> entityManagerFactory.get().getMetamodel()); - private final Lazy entityManager = Lazy.of(() -> entityManagerFactory.get().createEntityManager()); - - public AotMetaModel(Set> managedTypes) { - this("dynamic-tests", managedTypes); - } - - private AotMetaModel(String persistenceUnit, Set> managedTypes) { - this.persistenceUnit = persistenceUnit; - this.managedTypes = managedTypes; - } - - public static AotMetaModel hibernateModel(Class... types) { - return new AotMetaModel(Set.of(types)); - } - - public static AotMetaModel hibernateModel(String persistenceUnit, Class... types) { - return new AotMetaModel(persistenceUnit, Set.of(types)); - } - - public EntityType entity(Class cls) { - return metamodel.get().entity(cls); - } - - @Override - public EntityType entity(String s) { - return metamodel.get().entity(s); - } - - public ManagedType managedType(Class cls) { - return metamodel.get().managedType(cls); - } - - public EmbeddableType embeddable(Class cls) { - return metamodel.get().embeddable(cls); - } - - public Set> getManagedTypes() { - return metamodel.get().getManagedTypes(); - } - - public Set> getEntities() { - return metamodel.get().getEntities(); - } - - public Set> getEmbeddables() { - return metamodel.get().getEmbeddables(); - } - - public EntityManager entityManager() { - return entityManager.get(); - } - - EntityManagerFactory init() { - - MutablePersistenceUnitInfo persistenceUnitInfo = new MutablePersistenceUnitInfo() { - @Override - public ClassLoader getNewTempClassLoader() { - return new SimpleThrowawayClassLoader(this.getClass().getClassLoader()); - } - - @Override - public void addTransformer(ClassTransformer classTransformer) { - // just ignore it - } - }; - - persistenceUnitInfo.setPersistenceUnitName(persistenceUnit); - this.managedTypes.stream().map(Class::getName).forEach(persistenceUnitInfo::addManagedClassName); - - persistenceUnitInfo.setPersistenceProviderClassName(HibernatePersistenceProvider.class.getName()); - - return new EntityManagerFactoryBuilderImpl(new PersistenceUnitInfoDescriptor(persistenceUnitInfo) { - @Override - public List getManagedClassNames() { - return persistenceUnitInfo.getManagedClassNames(); - } - }, Map.of("hibernate.dialect", "org.hibernate.dialect.H2Dialect")).build(); - } -}