Spring Boot 3.1 Data JPA – show entity to table names

import jakarta.annotation.PostConstruct;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl;
import org.hibernate.persister.entity.AbstractEntityPersister;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.Map;

@Slf4j
@Repository
public class ShowTableNameRepositoryImpl {

    @PersistenceContext
    private EntityManager entityManager;

    @PostConstruct
    public void init() {
        Map<String, String> tableNames = new HashMap<>();
        MappingMetamodelImpl metamodel = (MappingMetamodelImpl) entityManager.getEntityManagerFactory().getMetamodel();
        metamodel.entityPersisters().forEach((k, v) -> {
            tableNames.put(v.getEntityName(), ((AbstractEntityPersister) v).getVersionedTableName());
        });
        log.info("tableNames: {}", tableNames);
    }

}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *