Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用spring boot扫描一个具体的JPA实体而不是同一个包下的所有实体?_Java_Jpa_Spring Boot - Fatal编程技术网

Java 如何用spring boot扫描一个具体的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

我在同一个包下有多个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;
    //...
}

经过一些研究,特别是以下“想法:

我进行了一些自定义代码封装以简化单元测试:

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;
  //...
}
这完全解决了我的问题。代码封装思想来自SpringBootAutoConfigure
org.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;
  //...
}