spring - @Converter 注释的类在 spring-boot 项目中未自动检测到

标签 spring hibernate type-conversion spring-boot jpa-2.1

我使用 spring-boot 1.2.2 和 hibernate.version: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();
    }
}

但是,我仍然必须在我的实体上使用@Convert。 转换器类是我扫描的包的一部分。 我是否必须做一些事情才能使其自动工作而不在所有数据库条目上使用@Convert?

::另外::

这是我的数据库配置

@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;
}

最佳答案

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

public class LocalDateTimePersistenceConverter implements
AttributeConverter<java.sql.Timestamp, LocaleDateTime>

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

关于spring - @Converter 注释的类在 spring-boot 项目中未自动检测到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282397/

相关文章:

java - Spring 属性编辑器只能处理表单吗?

java - 如何使用 Spring/AJAX 基于另一种方法使 Spring 中的 session 无效

javascript - Spring Boot 通过嵌入式 Tomcat 在 web-application.jar 之外提供外部 HTML/javascript/css 服务?

java - JPA @OrderBy 注解 - 排序字符串

java - Eclipse 控制台中的 H2 数据库结果

android - 如何为我的 android spring resttemplate 使用 SSL

java - Hibernate Envers - 获取日期之间的修订和对象

PHP 将 float 转换为 int 类型的意外结果

c++ - 如何将 int 转换为 QString?

java - 运行时错误。整数转换成字符串