tutorial requestmapping mvc example español ejemplo spring hibernate type-conversion spring-boot jpa-2.1

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