如何将PackageScan和Persistence.xml一起用于EntityManagerFactory?

时间:2015-09-05 22:48:34

标签: hibernate jpa spring-data-jpa

我正在尝试使用packageScan属性。如果我使用如下,我会收到以下错误。但是,如果我在persistence.xml中取消注释该属性,那么它正在工作。

我不能同时使用persistence.xml和packageToScan属性吗?

 Not an managed type: class org.entities.Person

Config.java

@Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setPersistenceXmlLocation("persistence.xml");
        em.setPersistenceUnitName("sample");
        em.setPackagesToScan(new String[]{"org.entities"});
        return em;
    }

的persistence.xml

<persistence>
    <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL">

        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <!--<class>org.entities.Person</class>-->

        <properties>
            <property name="hibernate.connection.username" value="user" />
            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
            <property name="hibernate.connection.password" value="user" />
            <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Hibernate" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

1 个答案:

答案 0 :(得分:0)

简而言之:你没有。 setPackagesToScan(…)状态的JavaDoc(强调我的):

  

设置是否对类路径中的实体类使用基于Spring的扫描,而不是使用JPA标准扫描带有persistence.xml标记的jar文件。

在没有标准JPA PersistenceUnitInfo的情况下,该机制基本上构建了默认JPA persistence.xml,因此无法与其结合使用。