Использование ObjectDB с Spring Data JPA "com.objectdb.jpa.EMF не является интерфейсом" - PullRequest
0 голосов
/ 26 января 2019

Переполнения

Я пытаюсь получить ObjectDB (2.7.6_01, последний) с Spring Data JPA (2.1.4, на первый взгляд, последний).

Документы для Spring Data JPA говорятчто необходим провайдер JPA версии 2.1.JPA-провайдер AFAIKT ObjectDB - 2,0 ... не уверен, что это проблема.

Но моя проблема заключается в следующем исключении:

Caused by: java.lang.IllegalArgumentException: com.objectdb.jpa.EMF is not an interface

Что вызывает:

EntityManagerFactory interface [class com.objectdb.jpa.EMF] seems to conflict with Spring's EntityManagerFactoryInfo mixin - consider resetting the 'entityManagerFactoryInterface' property to plain [javax.persistence.EntityManagerFactory]

Я рад, что фабрика менеджера сущностей ObjectDB правильно выбрана моим кодом, но оболочка Spring CGLIB для этого класса (EMF) не работает.

У кого-нибудь есть идеи?

Зависимости Gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile files('libs/objectdb-jee.jar')
    compileOnly 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Тогда любой из этих двух @Beans (один или другой, а не оба) вызывает одно и то же исключение EMF, приведенное выше:

@Bean
public JpaVendorAdapter jpaVendorAdapter() {

    final ObjectdbJpaVendorAdapter vendorAdapter = new ObjectdbJpaVendorAdapter();

    return vendorAdapter;
}

Или

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    final ObjectdbJpaVendorAdapter vendorAdapter = new ObjectdbJpaVendorAdapter();

    vendorAdapter.setShowSql(true);
    vendorAdapter.setGenerateDdl(false);

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);

    factory.setPackagesToScan("com.example.demo.persistence");
    factory.setDataSource(dataSource());
    factory.afterPropertiesSet();

    return factory;
}

У меня есть неиспользуемый DataSource @Bean, чтобы сохранить какой-то аспект Spring счастливым, но я не думаю, что он играет активную роль в этой проблеме.

Нетspring.jpa. * установлен на всех.

ура

...