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);
}
}