相关疑难解决方法(0)

ImprovedNamingStrategy不再适用于Hibernate 5

我有简单的spring-jpa配置,我配置了Hibernate ImprovedNamingStrategy.这意味着如果我的实体类有一个变量userName,那么Hibernate应该将它转换user_name为查询数据库.但是在我升级到Hibernate 5后,这个命名转换停止了工作.我收到错误:

错误:"字段列表"中的未知列'user0_.userName'

这是我的Hibernate配置:

@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 …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa spring-data-jpa hibernate-5.x

38
推荐指数
4
解决办法
3万
查看次数

带有嵌入式 H2GIS 的 Spring Boot 应用程序 - 初始化引发 SQL 语法错误

我正在尝试在 Spring Boot 应用程序中设置一个带有 H2GIS 扩展的内存中 H2 数据库。下面提供了我的build.gradleapplication.properties。根据H2GIS 文档和大量示例,扩展必须初始化如下:

CREATE ALIAS IF NOT EXISTS H2GIS_SPATIAL FOR "org.h2gis.functions.factory.H2GISFunctions.load";
CALL H2GIS_SPATIAL();
Run Code Online (Sandbox Code Playgroud)

在我的情况下,第一个命令成功执行,但第二个命令出现错误:

Syntax error in SQL statement "CREATE DOMAIN IF NOT EXISTS POINT AS GEOMETRY(1[*]) CHECK (ST_GEOMETRYTYPECODE(VALUE) = 1);"; SQL statement:
CREATE DOMAIN IF NOT EXISTS POINT AS GEOMETRY(1) CHECK (ST_GeometryTypeCode(VALUE) = 1); [42000-200] 42000/42000 (Help)
Run Code Online (Sandbox Code Playgroud)

这发生在执行registerGeometryType类的方法时org.h2gis.functions.factory.H2GISFunctions。由于某种原因,无法执行在该方法中编写的 SQL 语句。

到目前为止,我已经尝试通过将 SQL 命令放入src/main/resources/data.sql,并通过在 h2-console 中手动运行它们来初始化扩展。我还尝试使用不同版本的 H2GIS:1.4.0 和 1.5.0。所有的尝试都给我同样的效果。

当我尝试运行H2GIS 快速入门指南中 …

java hibernate h2 spring-boot

2
推荐指数
1
解决办法
1282
查看次数

标签 统计

hibernate ×2

java ×2

h2 ×1

hibernate-5.x ×1

jpa ×1

spring-boot ×1

spring-data-jpa ×1