我真的需要两次列出@Entity吗?

问题描述 投票:1回答:1

我试图创建一个简单的Hibernate(5.4版)应用程序,并将其与 hibernate.cfg.xml 文件。我使用的是 SessionFactory.所有的实体都被注释为 @Entity. 令我惊讶的是,该应用程序不工作,没有 <mapping class="..."/> 标签也是。没有自动删除功能。所以我必须列出实体两次--使用 @Entity 注释在代码和 mapping 标签在XML文件中。这样做对吗?

hibernate
1个回答
1
投票

你可以通过初始化hibernate的 SessionFactory 以下列方式。

MetadataSources metadata = new MetadataSources(
   new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build()
);

for (Class<?> clazz: ClassUtil.getClassesForPackage("com.xxx.hibernate.entities"))
{
   if (clazz.isAnnotationPresent(Entity.class)) {
      metadata.addAnnotatedClass(clazz);
   }
}

Metadata meta = metadata.buildMetadata();
SessionFactory sessionFactory = meta.buildSessionFactory();

其中 ClassUtil.getClassesForPackage 该方法使用了在 这个问题.

© www.soinside.com 2019 - 2024. All rights reserved.