spring - requestmapping - La clase anotada de @Converter no se detecta automáticamente en el proyecto de arranque de primavera
spring mvc example (2)
Lo único que puedo ver es que es posible que deba cambiar esta línea a continuación
public class LocalDateTimePersistenceConverter implements
AttributeConverter<java.sql.Timestamp, LocaleDateTime>
Por lo tanto, Spring sabría cómo convertir automáticamente qué tipo de atributos.
Estoy usando spring-boot 1.2.2 con hibernate.version: 4.3.6.Final para una operación simple y estaba usando el @Converter para asignar el campo java8 LocalDateTime a la marca de tiempo.
En mi clase de conversión, utilicé autoApply = true como a continuación.
@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();
}
}
Sin embargo, todavía tengo que usar @Convert en mi entidad. La clase de convertidor es parte de los paquetes que escaneo. ¿Es algo que tengo que hacer para que esto funcione automáticamente sin usar @Convert en todas las entradas de la base de datos?
::Adicionalmente::
Aquí está mi configuración de base de datos
@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;
}
El orden es incorrecto, debería ser:
public class LocalDateTimePersistenceConverter implements
AttributeConverter<LocaleDateTime, java.sql.Timestamp>
Como dice el Javadoc:
javax.persistence.AttributeConverter<X, Y>
Parameters:
X the type of the entity attribute
Y the type of the database column