Java 如何用spring boot扫描一个具体的JPA实体而不是同一个包下的所有实体?
我在同一个包下有多个JPA实体,例如Java 如何用spring boot扫描一个具体的JPA实体而不是同一个包下的所有实体?,java,jpa,spring-boot,Java,Jpa,Spring Boot,我在同一个包下有多个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
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;
//...
}
经过一些研究,特别是以下“想法: 我进行了一些自定义代码封装以简化单元测试:
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;
//...
}
这完全解决了我的问题。代码封装思想来自SpringBootAutoConfigureorg.springframework.boot.autoconfigure.domain.EntityScan
类的实现
我的源代码宿主。它在github上。似乎您的问题已经解决了:需要编写更复杂的代码。是否有类似@EntityScan(classes=EntityA.class)的方法?这是一个非常有用的解决方案。唯一的缺点是所选类不能与其他实体类有任何关联。否则,实体管理器将尝试加载所有关联,但失败。
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;
//...
}