//通过EntityManager获取factory
EntityManagerFactory entityManagerFactory = (你自己的entityManager对象).getEntityManagerFactory();
SessionFactoryImpl sessionFactory = (SessionFactoryImpl)entityManagerFactory.unwrap(SessionFactory.class);
Map<String, EntityPersister> persisterMap = sessionFactory.getEntityPersisters();
//Map<String, EntityPersister> persisterMap = sessionFactory.getMetamodel().entityPersisters();
for(Map.Entry<String,EntityPersister> entity : persisterMap.entrySet()){
Class targetClass = entity.getValue().getMappedClass();
SingleTableEntityPersister persister = (SingleTableEntityPersister)entity.getValue();
Iterable<AttributeDefinition> attributes = persister.getAttributes();
String entityName = targetClass.getSimpleName();//Entity的名称
String tableName = persister.getTableName();//Entity对应的表的英文名
System.out.println("类名:" + entityName + " => 表名:" + tableName);
//属性
for(AttributeDefinition attr : attributes){
String propertyName = attr.getName(); //在entity中的属性名称
String[] columnName = persister.getPropertyColumnNames(propertyName); //对应数据库表中的字段名
String type = "";
PropertyDescriptor targetPd = BeanUtils.getPropertyDescriptor(targetClass, propertyName);
if(targetPd != null){
type = targetPd.getPropertyType().getSimpleName();
}
System.out.println("属性名:" + propertyName + " => 类型:" + type + " => 数据库字段名:" + columnName[0]);
}
}
jpa 通过EntityManager获取 所有实体类 属性 及其对应的表 字段名
猜你喜欢
转载自blog.csdn.net/qq_38316721/article/details/103236778
今日推荐
周排行