@EntityScan не сканирует - PullRequest
0 голосов
/ 28 мая 2019

У меня есть загрузочное приложение Spring с интеграцией и Spring Data JPA.Конфигурация выглядит следующим образом:

Application.class:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

IntegrationConfiguration.class

@Configuration
@EnableIntegration
public class IntegrationConfiguration {
    private static final String FILE_PATTERN = "*.XML";

    @Value("${spring.integration.input-directory}")
    private String inputDirectory;
    @Value("${spring.integration.output-directory}")
    private String outputDirectory;
    @Value("${spring.integration.threads}")
    private int threadsCount;
    @Resource
    private ActualStatusRepository actualStatusRepository;

    //. . . removed file splitter and channels

    @Bean(name = "fiasEntityRouter")
    @Router(inputChannel = "afterSplitChannel")
    AbstractMappingMessageRouter fiasEntityRouter() {
        Map<String, String> routingMap = ImmutableMap.<String, String>builder()
                .put("ru.ecoteck.entity.ActualStatus", "actualStatusChannel")
                .build();
        PayloadTypeRouter router = new PayloadTypeRouter();
        router.setChannelMappings(routingMap);
        router.setDefaultOutputChannel(logChannel());
        return router;
    }

    @Bean(name = "actualStatusChannel")
    public MessageChannel actualStatusChannel() {
        return new DirectChannel();
    }

    @Bean(name = "actualStatusHandler")
    @ServiceActivator(inputChannel = "actualStatusChannel")
    public MessageHandler actualStatusHandler() {
        return new ActualStatusHandler(actualStatusRepository);
    }
}

Итак, приложение начинает читать файлы XML, разбивает их на части, десериализовать (XStream) и затем объект сохраняет, я получаю сообщение об ошибке, что таблица actual_statuses не существует.Но в моем @Entity аннотированном классе я использую таблицу с именем ActualStatuses

@XStreamAlias("ActualStatus")
@Entity
@Table(name = "ActualStatuses")
public class ActualStatus {

    @XStreamAsAttribute
    @XStreamAlias("ACTSTATID")
    @Id
    @Column(name = "ACTSTATID", nullable = false)
    private int id;

    // . . .
}

ActualStatusHandler просто вызывает repository.save(message.getPayload), но с парой защитного кода.Похоже, проблема только с поиском @Entity классов.Весенняя загрузочная версия 2.1.5. ВЫПУСК.Я пробовал явную аннотацию @EntityScan("my.package.entity"), но безрезультатно.Я не использую никакой пользовательской конфигурации слоя базы данных.Просто application.properties

#database
spring.datasource.url=jdbc:postgresql://localhost:5432/fias
spring.datasource.username=fias
spring.datasource.password=fias
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.open-in-view=false
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
# for debug
spring.jpa.show-sql=true

Что не так?Большое спасибо за помощь.

1 Ответ

1 голос
/ 28 мая 2019

Итак, параметр

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

сделал свое дело, и теперь приложение работает, как ожидалось. Спасибо Патрику за указание мне правильного направления копать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...