Necesito crear mi configuración personalizada para EntityManager , sin embargo, quiero establecer todas las propiedades adecuadas para ella desde application.properties . Aquí configuro las propiedades hibernate.hbm2ddl.auto e hibernate.dialect explícitamente. Pero no sé qué propiedades se pasarán en application.properties . Se pueden cambiar desde este archivo. Cómo obtener todas las propiedades apropiadas de application.properties para EntityManager .
@Bean public LocalContainerEntityManagerFactoryBean entityManager() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); em.setPackagesToScan(new String[] {ENTITY_TO_SCAN}); HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); Map<String, Object> properties = new HashMap<>(); properties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); properties.put("hibernate.dialect", env.getProperty("hibernate.dialect")); em.setJpaPropertyMap(properties); return em; }Todas sus propiedades apropiadas estarán disponibles en el bean JpaProperties, si se declaran correctamente en el archivo application.properties.
@Autowired JpaProperties jpaProperties;El formato de propiedades jpa debería ser así.
spring.jpa.properties.hibernate.show_sql=false spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect prefijo spring.jpa.properties.*
Luego puede actualizar su bean administrador de entidad como
@Bean public LocalContainerEntityManagerFactoryBean entityManager(JpaProperties jpaProperties) { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); em.setPackagesToScan(new String[] {ENTITY_TO_SCAN}); HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); em.setJpaPropertyMap(jpaProperties.getProperties()); return em; }