如何从Hibernate ClassMetaData获取java类

时间:2011-09-09 12:23:39

标签: java hibernate

我正在使用以下代码从sessionFactory获取所有ClassMetaData。

...
Map allClassMetadata = getSessionFactory().getAllClassMetadata();
Set<String> entityNames = allClassMetadata.keySet();
for(String entityName : entityNames) {
    ClassMetadata classMetaData = (ClassMetadata)allClassMetadata.get(entityName);
    Class entityClass = 

}
...

是否可以检索相应的java类。我见过方法getMappedClass(EntityMode mode)。但是实体模式是什么意思?

2 个答案:

答案 0 :(得分:1)

你是对的,放getEntityMode( EntityMode.POJO )。有一些实体模式可用于映射到除POJO之外的其他内容,例如XML或地图。

答案 1 :(得分:1)

截至2016年(Hibernate 5.2),我们已弃用getAllClassMetadata

我想这可以用来代替:

Set<EntityType<?>> entities = sessionFactory.getMetamodel().getEntities();

List<?> classes = entities.stream()
                          .map(EntityType::getJavaType)
                          .filter(Objects::nonNull)
                          .collect(Collectors.toList());