Как установить значение по умолчанию для EntityManager - PullRequest
0 голосов
/ 05 июля 2018

Могу ли я узнать, как установить значение по умолчанию для EntityManager? Например, я хочу, чтобы EntityManager по умолчанию был «A» без изменения строки @PersistenceContext до @PersistenceContext(unitName="A"). Мне нужно сделать это, потому что я не могу редактировать строку @PersistenceContext (файл JAR из другого проекта). Я пробовал @Primary, но он не работает.

// editable
@Bean(name = "A")
@Primary
public LocalContainerEntityManagerFactoryBean emfA() {
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    ...
    em.setPersistenceUnitName("A");
    ...
    return em;
}

// editable
@Bean(name = "B")
public LocalContainerEntityManagerFactoryBean emfB() {
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    ...
    em.setPersistenceUnitName("B");
    ...
    return em;
}

// not editable
@PersistenceContext
private EntityManager em;

1 Ответ

0 голосов
/ 05 июля 2018

Один из ребят из Spring сделал демонстрацию на , как именно это сделать . Похоже, вам нужно будет указать пакеты, где именно должен применяться менеджер сущностей. Вам нужно будет сделать это в:

  1. @EnableJpaRepositories со свойствами basePackages или basePackageClasses, а также ...
  2. Звонок строителя EntityManagerFactoryBuilder#packages

В своем примере выглядит так:

@EnableJpaRepositories(
        entityManagerFactoryRef = "orderEntityManager",
        transactionManagerRef = "orderTransactionManager",
        basePackageClasses = Order.class)

и

@Bean
public LocalContainerEntityManagerFactoryBean orderEntityManager(
        JpaProperties orderJpaProperties) {
    EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(
            orderJpaProperties);
    return builder
            .dataSource(orderDataSource())
            .packages(Order.class)
            .persistenceUnit("ordersDs")
            .build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...