ImprovedNamingStrategy ne fonctionne plus en mode veille prolongée 5

J'ai simple printemps-configuration jpa où j'ai configuré Hibernate ImprovedNamingStrategy. Cela signifie que si ma classe d'entité a une variable userName, puis mise en veille prolongée doit le convertir en user_name pour l'interrogation de la base de données. Mais cette conversion de nom cessé de fonctionner après la mise à niveau de mise en veille prolongée 5. J'obtiens l'erreur:

ERROR: Unknown column 'user0_.nom d'utilisateur' in 'field list'

C'est mon Hibernate config:

@Configuration
@EnableJpaRepositories("com.springJpa.repository")
@EnableTransactionManagement
public class DataConfig {
@Bean
public DataSource dataSource(){
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/test");
ds.setUsername("root");
ds.setPassword("admin");
return ds;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(){ 
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setShowSql(Boolean.TRUE);
vendorAdapter.setDatabase(Database.MYSQL);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setDataSource(dataSource());
factory.setPackagesToScan("com.springJpa.entity");
Properties jpaProperties = new Properties();
jpaProperties.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.ImprovedNamingStrategy");
jpaProperties.put("hibernate.dialect","org.hibernate.dialect.MySQL5InnoDBDialect");
factory.setJpaProperties(jpaProperties);
factory.afterPropertiesSet();
return factory;
}
@Bean
public SharedEntityManagerBean entityManager() {
SharedEntityManagerBean entityManager = new SharedEntityManagerBean();
entityManager.setEntityManagerFactory(entityManagerFactory().getObject());
return entityManager;
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory().getObject());
return txManager;
}
@Bean
public ImprovedNamingStrategy namingStrategy(){
return new ImprovedNamingStrategy();
}
}

C'est ma classe d'Entité:

@Getter
@Setter
@Entity
@Table(name="user")
public class User{
@Id
@GeneratedValue
private Long id;
private String userName;
private String email;
private String password;
private String role;
}

Je ne veux pas explicitement le nom de mon champs de base de données dans la Colonne @annotations. Je veux que ma configuration qui peut convertir implicitement chameau cas de soulignement.

Veuillez guide.

  • Je ne comprends pas pourquoi vous ne voulez pas utiliser la Colonne @
  • ses juste pour la facilité de codage, d'ajouter "@Column" pour chacune des variables est tout simplement ennuyeux, au contraire je peux configurer le Nom de la Stratégie qui sera la carte le nom de la variable dans la base de données des noms de colonne et je peux éviter d'écrire de si nombreuses Colonne d'annotation
InformationsquelleAutor Anup | 2015-09-07