Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在运行时通过Hibernate扫描@Entity?_Hibernate - Fatal编程技术网

如何在运行时通过Hibernate扫描@Entity?

如何在运行时通过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>

Hibernate(JPA)是否有任何内置机制在启动时扫描@Entity注释的bean。我试图避免为每个持久对象维护特定的“hbm”文件

现在我有以下几点:

Test.java

@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注释的所有类。我将建立一些自定义的东西,如果它还不存在的话。