在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中列出了实体类。
答案 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项目设置开始。