[英]Hibernate Reserved keyword escaping not working
由于在休眠模型中使用MYSQL
保留关键字,我遇到以下错误。
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'when, who, why) values ('ICL670A - Project Deliverable - HAQ 1 - FDA-IR', null, ' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1109) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at
我在application.properties
文件中设置了以下属性,它以前可以工作,但现在不起作用,我无法弄清楚原因。
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
现在我必须在我的模型定义中手动转义列才能工作。
@Column(name = "`who`")
private String who;
@Column(name = "`when`")
private Date when;
@Column(name = "`why`")
private String why;
我怎样才能进一步调试呢? 我怎样才能确保这个财产被接受?
我们在 Spring Boot 项目中使用了多个数据库连接。 所以所有的hibernate属性都需要在DataSourceConfigurationFile
进行配置
@Primary
@Bean
public LocalContainerEntityManagerFactoryBean idotdbEntityManager() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(idotdbDataSource());
em.setPackagesToScan("com.novartis.idot.model");
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
final HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.physical_naming_strategy", SpringPhysicalNamingStrategy.class.getName());
properties.put("hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName());
properties.put("hibernate.hbm2ddl.auto", env.getProperty("spring.hibernate.ddl-auto"));
properties.put("hibernate.dialect", env.getProperty("spring.hibernate.dialect"));
properties.put("hibernate.globally_quoted_identifiers", env.getProperty("spring.jpa.properties.hibernate.globally_quoted_identifiers"));
properties.put("hibernate.id.new_generator_mappings", env.getProperty("spring.jpa.properties.hibernate.id.new_generator_mappings"));
em.setJpaPropertyMap(properties);
return em;
}
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSourceProperties idotdbDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource idotdbDataSource() {
return idotdbDataSourceProperties().initializeDataSourceBuilder().build();
}
@Primary
@Bean
public PlatformTransactionManager idotdbTransactionManager() {
final JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(idotdbEntityManager().getObject());
return transactionManager;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.