2011-09-09 27 views
2

我使用以下代碼從sessionFactory中獲取所有ClassMetaData。我如何從休眠類ClassMetaData中獲取java類

... 
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)。但是entitymode是什麼意思?

回答

1

你是對的,把getEntityMode(EntityMode.POJO)。有幾種實體模式可用於映射到POJO以外的其他東西,如XML或Maps。

1

截至2016年(休眠5.2),不推薦使用getAllClassMetadata

我想這可以用來代替:

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

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