我有多个JPA实体在同一个包中,例如my.package.po.EntityA
和my.package.po.EntityB
。使用下面的代码会自动扫描EntityA和EntityB,但我只是想扫描EntityA。我怎么能这样做?
package my.package.dao;
...
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {EntityADaoJpaImpl.class})
@DataJpaTest
@EntityScan(basePackageClasses = {EntityA.class})
public class EntityADaoJpaImplTest {
@Inject
private TestEntityManager entityManager;
@Inject
private EntityADaoJpaImpl dao;
//...
}
答案 0 :(得分:1)
经过一些研究,特别关注' ignore-some-classes-while-scanning-packagestoscan'想法:
redirectingURIs
我制作了一些自定义代码封装来简化我的单元测试:
// add only required enitites from a libray
localContainerEntityManagerFactoryBean.setPersistenceUnitPostProcessors(new PersistenceUnitPostProcessor() {
@Override
public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo persistenceUnit) {
persistenceUnit.addManagedClassName("my.package.po.EntityA");
}
});
它完全解决了我的问题。代码封装思想来自spring-boot-autoconfigure package my.package.dao;
import tech.simter.test.jpa.EntityScan;
import tech.simter.test.jpa.JpaTestConfiguration;
...
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {EntityADaoJpaImpl.class, JpaTestConfiguration.class})
@DataJpaTest
@EntityScan({EntityA.class})
public class EntityADaoJpaImplTest {
@Inject
private TestEntityManager entityManager;
@Inject
private EntityADaoJpaImpl dao;
//...
}
类的实现。
我的源代码托管here。它在github上。