如何在运行时通过Hibernate扫描@Entity?
Hibernate(JPA)是否有任何内置机制在启动时扫描@Entity注释的bean。我试图避免为每个持久对象维护特定的“hbm”文件 现在我有以下几点: Test.java如何在运行时通过Hibernate扫描@Entity?,hibernate,Hibernate,Hibernate(JPA)是否有任何内置机制在启动时扫描@Entity注释的bean。我试图避免为每个持久对象维护特定的“hbm”文件 现在我有以下几点: Test.java @Entity public class Test { ... } Test.hbm.xml <hibernate-mapping package="domain"> <class name="Test" table="test"> ... </class>
@Entity
public class Test {
...
}
Test.hbm.xml
<hibernate-mapping package="domain">
<class name="Test" table="test">
...
</class>
</hibernate-mapping>
...
您可以为每个hbm文件创建所有@Entity bean,然后可以删除所有hbm文件,因为hibernate JPA将在启动时将每个bean映射到特定的表
是的,它会在最短时间绘制地图,别担心
你可以这样做
<persistence-unit name="myPetStorePU">
<description>Petstore Persistence Unit</description>
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
<class>com.sun.javaee.blueprints.petstore.model.Tag</class>
<class>com.sun.javaee.blueprints.petstore.model.SellerContactInfo</class>
<class>com.sun.javaee.blueprints.petstore.model.Product</class>
<class>com.sun.javaee.blueprints.petstore.model.Item</class>
<class>com.sun.javaee.blueprints.petstore.model.Category</class>
<class>com.sun.javaee.blueprints.petstore.model.Address</class>
<class>com.sun.javaee.blueprints.petstore.model.ZipLocation</class>
<properties>
<property name="toplink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@#############"/>
<property name="toplink.jdbc.user" value="####"/>
<property name="toplink.jdbc.password" value="#####"/>
<property name="toplink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
Petstore持久化单元
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
com.sun.javaee.blueprints.petstore.model.Tag
com.sun.javaee.blueprints.petstore.model.SellerContactInfo
com.sun.javaee.blueprints.petstore.model.Product
com.sun.javaee.blueprints.petstore.model.Item
com.sun.javaee.blueprints.petstore.model.Category
com.sun.javaee.blueprints.petstore.model.Address
com.sun.javaee.blueprints.petstore.model.ZipLocation
其中所有模型都是@Entity类。谢谢您的建议,但这不起作用。如果没有特定的hbm文件,则会出现以下错误:未知实体:test但现在您必须更改配置文件,而不是加载hbm.xml文件,现在您必须使用context:component scannop,在该配置中创建EntityManager工厂时,必须传递所有实体类,而不是hbm文件。请查看此链接再次感谢,但是我正在寻找一种不需要维护单独实体(即persistence.xml)的解决方案。正在查找在启动时运行的扫描程序,该扫描程序收集用@Entity注释的所有类。我将建立一些自定义的东西,如果它还不存在的话。