如何在Spring启动中为@Entity类启用类路径扫描

时间:2016-11-05 15:53:09

标签: spring hibernate spring-boot spring-data

在Spring启动应用程序中,我对@Entity类的类路径扫描的所有尝试都失败了。我在网上找到的最常见的解决方案是这个,它没有用 -

LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.acme.domain");

@Configuration类上的@EntityScan也不起作用。

所有实体及其映射都列在orm.xml中,我不得不回到使用@Entity注释。

让我走到一半的一个解决方案是 -

<persistence-unit>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>META-INF/orm.xml</mapping-file>
    <class>com.acme.domain.Entity</class>
    <shared-cache-mode>NONE</shared-cache-mode>
</persistence-unit>

这样我可以使用@Entity注释,如果我在persistence.xml中列出了实体类。

2 个答案:

答案 0 :(得分:2)

我在Spring Data JPA web page上列出的搜索时找不到的解决方案就是这个 -

ClasspathScanningPersistenceUnitPostProcessor postProcessor = new ClasspathScanningPersistenceUnitPostProcessor("com.acme.domain");
entityManagerFactory.setPersistenceUnitPostProcessors(postProcessor);

现在启用@Entity类的类路径扫描。 orm.xml中没有映射,persistence.xml中没有实体列表。

答案 1 :(得分:0)

分享您的代码有助于排查问题。你可以分享一个github项目吗?

要记住的一件事是,SpringBoot对所有内容采取“意见”方法。这意味着对于JPA,有一种“启动”方式。 Spring Tool Suite是您的朋友。

建议您查看此tutorial,了解如何在Boot中执行JPA。此外,在使用启动时,我强烈建议从Spring Initializer项目的maven项目设置开始。