[英]@EntityScan doesn't scan
我有帶有Integration和Spring Data JPA的Spring啟動應用程序。 配置如下:
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.RELEASE。 我嘗試了顯式批注@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
怎么了 非常感謝您的幫助。
所以,參數
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
做到了,現在應用程序按預期工作。 感謝Patrick為我指明了正確的挖掘方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.