【问题标题】:How to auto detect entities in JPA 2.0如何在 JPA 2.0 中自动检测实体
【发布时间】:2013-04-11 20:56:19
【问题描述】:

我很确定我过去在 JPA 2.0 中使用了某种自动检测带有 @Entity 注释的 bean,但我不知道如何。您如何做到这一点,而不是在 persistence.xml 中的 class XML 元素中列出每个 bean?

【问题讨论】:

    标签: java spring jakarta-ee jpa


    【解决方案1】:

    你需要添加到persistence.xml下一行:

    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    

    例如

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" ...>
        <persistence-unit name="YourPU" ...>
            <exclude-unlisted-classes>false</exclude-unlisted-classes>
            <properties>
                <property name="eclipselink.logging.level" value="ALL"/>
                <property name="eclipselink.ddl-generation" 
                    value="drop-and-create-tables"/>
            </properties>
        </persistence-unit>
    </persistence>
    

    【讨论】:

      【解决方案2】:

      从 Spring 3.1 开始,您还可以选择完全使用 forget persistence.xml,并使用 packagesToScan 属性配置您的 EntityManagerFactory,类似于:

      <bean id="entityManagerFactory" 
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
            p:dataSource-ref="dataSource"
            p:packagesToScan="${jpa.entity.packages}">
      
          <property name="jpaVendorAdapter">
              <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                    p:showSql="${hibernate.show_sql}"/>
          </property>
      
          <property name="jpaProperties">
              <props>
                  <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
                  <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
              </props>
          </property>
      </bean>
      

      【讨论】:

      • 我知道,但我询问了 JPA persistence.xml
      • 我知道,我也只是想提一下这个选项,因为它是解决手头问题的好方法(自动检测实体类)。
      【解决方案3】:

      在此处查看 Pascal Thivent 的答案:Do I need <class> elements in persistence.xml?

      你有不同的方法来做到这一点,但 JPA 本身不支持自动扫描。恕我直言,引用实体的最简单和最干净的方法是将模型打包在 jar 中并使用 &lt;jar-file&gt;MyModel.jar&lt;/jar-file&gt;

      引用它

      【讨论】:

        猜你喜欢
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多