2011-09-09 7 views
2

次のコードを使用して、すべてのClassMetaDataをsessionFactoryから取得しています。Hibernate 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)を見た。しかし、エンティティモードはどういう意味ですか?

答えて

1

あなたは正しく、getEntityMode(EntityMode.POJO)と入力してください。 XMLやマップなどのPOJO以外のものへのマッピングに使用できるエンティティモードがいくつかあります。

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()); 
関連する問題