gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:58:43 30 4
gpt4 key购买 nike

我使用 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com