我有一個實體類,其全名是foo.bar.Book
。我寫了下面一個簡單的測試類:屬性`packagesToScan`不工作
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/beans-test.xml", "/dataSource-test.xml"})
public class BookTest {
@PersistenceContext EntityManager entityManager;
@Transactional
@Test
public void test() {
Book book = new Book();
book.setTitle("Hello");
entityManager.persist(book);
}
}
在dataSource-test.xml
,我有
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence-test.xml" />
<property name="persistenceUnitName" value="tempWarPU" />
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="foo.bar.*" />
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
</bean>
注意,上面有一個屬性packagesToScan
,這是爲了讓Spring找到foo.bar.Book
。但是,這並沒有發生。我得到了這樣的錯誤:
java.lang.IllegalArgumentException: Unknown entity: foo.bar.Book
不過,如果我下面添加到persistence-test.xml
顯示在entityManagerFactory
bean定義行的測試將通過:
<class>foo.bar.Book</class>
因此,它似乎我財產是不是真的工作。真的嗎?如果是這樣,我該如何讓Spring自動掃描實體類?我嘗試將<exclude-unlisted-classes>false</exclude-unlisted-classes>
放入persistence-test.xml
,但這沒有幫助。
非常感謝。
更新
春天的版本是4.0.0.RELEASE
。
我也嘗試過非通配方式,但沒有運氣。
<property name="packagesToScan" value="foo.bar" />
的屬性是'packagesToScan '它需要包名稱,而不是通配符。 –