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