@Converter注释类在spring-boot项目中没有被自动检测到

Var*_*esh 7 spring hibernate type-conversion jpa-2.1 spring-boot

我正在使用带有hibernate.version的spring-boot 1.2.2:4.3.6.Final用于简单的操作,并使用@Converter将java8 LocalDateTime字段映射到时间戳.

在我的转换器类中,我使用autoApply = true,如下所示.

@Converter(autoApply = true)
public class LocalDateTimePersistenceConverter implements
    AttributeConverter {
    @Override
    public java.sql.Timestamp convertToDatabaseColumn(LocalDateTime entityValue) {
        return Timestamp.valueOf(entityValue);
    }

    @Override
    public LocalDateTime convertToEntityAttribute(java.sql.Timestamp databaseValue) {
        return databaseValue.toLocalDateTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然需要在我的实体上使用@Convert.转换器类是我扫描的包的一部分.为了让它自动运行而不在所有数据库条目上使用@Convert,我必须做些什么?

::另外::

这是我的DB配置

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
    lef.setDataSource(dataSource());
    lef.setJpaVendorAdapter(jpaVendorAdapter());
    lef.setPackagesToScan("path to domain and Converter class");
    lef.afterPropertiesSet();
    return lef;
}

@Bean
public JpaTransactionManager transactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
    return transactionManager;
}

@Bean
public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
    adapter.setDatabase(Database.ORACLE);
    adapter.setShowSql(false);
    adapter.setGenerateDdl(false);
    return adapter;
}
Run Code Online (Sandbox Code Playgroud)

ero*_*a84 5

我唯一能看到的是你可能需要在下面更改这一行

public class LocalDateTimePersistenceConverter implements
AttributeConverter<java.sql.Timestamp, LocaleDateTime>
Run Code Online (Sandbox Code Playgroud)

因此,Spring会知道如何自动转换哪种类型的属性.