programing

Spring Boot에서 EntityManager에 대한 핸들을 가져오는 중

closeapi 2023. 7. 5. 20:43
반응형

Spring Boot에서 EntityManager에 대한 핸들을 가져오는 중

주어진 엔터티 개체에 대한 엔터티 관리자에 대한 핸들을 가져오는 방법이 있습니까?JPA 스타터와 함께 스프링 부트 1.2.3을 사용하고 있으며 여러 데이터 소스를 사용하여@configuration

확인했습니다.entityManager에 대한 SPRING BOOT 액세스 권한이 있지만 질문에 답하지 않는 것 같습니다.

감사해요.

편집: 데이터 소스가 정의되는 방식에 대한 설명을 추가했습니다.

@Component
@Configuration
public class DataSources {
    @Bean
    @Primary
    @ConfigurationProperties(prefix="first.datasource")
    public DataSource getPrimaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix="second.datasource")
    public DataSource getSecondDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix="third.final.datasource")
    public DataSource getThirdFinalDataSource() {
        return DataSourceBuilder.create().build();
    }
}

나의 application.yml에는 다음과 같은 섹션이 있습니다.

first.datasource:
  name: 'first_datasource',
  #other attributes...
second.datasource:
  name: 'second_datasource',
  #other attributes...
third.final.datasource:
  name: 'first_datasource',
  #other attributes...

지금까지 저는 @Stephane의 제안을 모두 시도했지만 이해합니다.NoSuchBeanDefinitionException

예를 들어 내 실체가Customer그리고 노력했습니다.

@Service
public class FooService {

    private final EntityManager entityManager;

    @Autowired
    public FooService(@Qualifier("customerEntityManager") EntityManager entityManager) {
        ...
    }

}

하지만 저도 노력했어요.

@PersistenceContext(unitName = "customer") // also tried "customers" and "first_datasource"
private EntityManager entityManager;

불운하게도

어떻게 구성했는지에 따라 다르지만 당신은 그것을 주입하려고 시도해 본 적이 있습니까?EntityManager그것을 만든 공장에 해당하는 한정자로?

다음은 두 개의 데이터 소스가 있는 샘플 프로젝트입니다.만약 당신이 주사하고 싶다면.EntityManager순서를 위해, 프로젝트의 아무 봄 콩에서나 다음을 수행합니다.

@Service
public class FooService {

    private final EntityManager entityManager;

    @Autowired
    public FooService(@Qualifier("orderEntityManager") EntityManager entityManager) {
        ...
    }

}

고객의 경우, 다음을 사용합니다.customerEntityManager.

물론 대신 영구 장치 이름을 사용할 수 있습니다. 즉,

@PersistenceContext(unitName = "customers")
private EntityManager entityManager;

@PersistenceContext(unitName = "orders")
private EntityManager entityManager;

자세한 내용은 프로젝트 구성을 확인하십시오.

언급URL : https://stackoverflow.com/questions/32020249/obtaining-handle-to-entitymanager-in-spring-boot

반응형