我有一个非常简单的persistance.xml文件:
persistance.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL"> <class>pl.michalmech.eventractor.domain.User</class> <class>pl.michalmech.eventractor.domain.Address</class> <class>pl.michalmech.eventractor.domain.City</class> <class>pl.michalmech.eventractor.domain.Country</class> <properties> <property name="hibernate.hbm2ddl.auto" value="validate" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence>
而且有效。
但是,当我删除<class>元素时,应用程序看不到实体(所有类都带有注释@Entity)。
<class>
@Entity
是否有自动扫描@Entity类的机制?
jar-file你可以使用persistence.xml
jar-file
persistence.xml
<persistence> <persistence-unit name="OrderManagement"> <description>This unit manages orders and customers. It does not rely on any vendor-specific features and can therefore be deployed to any persistence provider. </description> <jta-data-source>jdbc/MyOrderDB</jta-data-source> <jar-file>MyOrderApp.jar</jar-file> <class>com.widgets.Order</class> <class>com.widgets.Customer</class> </persistence-unit> </persistence>
该文件定义了一个名为的持久性单元OrderManagement,它使用JTA感知数据源jdbc/MyOrderDB。所述jar-file和class元素指定管持久类:实体类,可嵌入类和超类映射。该jar-file元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。
OrderManagement
jdbc/MyOrderDB
class
对于Hibernate,也可以进行设置和配置以获取更多详细信息。
Hibernate
编辑:实际上,如果你不介意不符合规范,Hibernate即使在Java SE中也支持自动检测。为此,添加hibernate.archive.autodetection属性:
hibernate.archive.autodetection
<persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL"> <!-- This is required to be spec compliant, Hibernate however supports auto-detection even in JSE. <class>pl.michalmech.eventractor.domain.User</class> <class>pl.michalmech.eventractor.domain.Address</class> <class>pl.michalmech.eventractor.domain.City</class> <class>pl.michalmech.eventractor.domain.Country</class> --> <properties> <!-- Scan for annotated classes and Hibernate mapping XML files --> <property name="hibernate.archive.autodetection" value="class, hbm"/> <property name="hibernate.hbm2ddl.auto" value="validate" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit>