2016-11-05 27 views
0

在Spring引導應用程序中,我所有對@Entity類的類路徑掃描嘗試都失敗了。我在網絡上發現的最常見的解決方案是這樣的,它沒有工作 - 在@Configuration類如何在Spring引導中爲@Entity類啓用類路徑掃描

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

@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> 

這樣,如果我在persistence.xml中列出的實體類,我可以使用@Entity註解。

回答

0

同時搜索,這是在Spring Data JPA web page上市我沒有找到解決的辦法是這樣 -

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

現在@Entity類的類路徑掃描是啓用的。 orm.xml中沒有映射,沒有在persistence.xml中列出實體。

0

分享您的代碼將有助於排查問題。有沒有可以分享的github項目?

有一點需要記住的是,SpringBoot對所有事物都採取「自認」的方法。這意味着對於JPA來說,這是一種「開機」的做事方式。 Spring Tool Suite是你的朋友。

建議您檢查此tutorial,它會告訴您如何在啓動時執行JPA。另外,在使用引導時,我強烈建議從Spring Initializer項目開始使用maven項目設置。