2013-02-12 20 views
0

Hibernate(JPA)是否有內置的機制來在啓動時掃描@Entity帶註釋的bean。我試圖避免爲每個持久對象維護特定的'hbm'文件。如何在運行時通過Hibernate掃描@Entity?

現在,我有以下幾點:

Test.java

@Entity 
public class Test { 
... 
} 

Test.hbm.xml

<hibernate-mapping package="domain"> 
    <class name="Test" table="test"> 
    ... 
    </class> 
</hibernate-mapping> 

回答

0

您可以創建所有@Entity豆每個HBM文件,然後您可以刪除所有hbm文件作爲休眠JPA將在啓動時將每個bean映射到特定表格

是的,它會在statup時間映射,不用擔心。

你可以做這樣的事情

<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> 

,所有車型都@Entity類。

+0

感謝您的建議,但這是行不通的。沒有具體的HBM文件得到這個錯誤:未知的實體:測試 – user1665889 2013-02-12 13:39:46

+0

但現在你必須改變你的配置文件,而不是加載hbm.xml文件,現在你必須使用上下文:組件掃描 – 2013-02-12 13:43:08

+0

這將需要使用Spring框架,對嗎? – user1665889 2013-02-12 13:49:18