Springboot+JPA+Hibernate+GBase 8s示例

IntelliJ IDEA 2018.3.6 x64
新创建项目(New Project),选Spring Initializr,SDK使用1.8,使用默认的https://start.spring.io创建
项目元数据:
注意Artifact,Packaging和Java Version
Dependencies中选上Web -> Spring Web,注意选择Sping Boot的版本,这里使用的是2.7.3
指定项目名称和路径
完成后,生成项目。
在项目的根目录下的pom.xml中增加依赖(dependency)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
新建目录jars,引入GBase 8s的jdbc驱动和hibernate方言包(需要与hibernate版本对应或者兼容)
这里使用到hibernate版本是5.6.10,对应的GBase 8s方言包可以在https://gbasedbt.com/dl/hibernate/3.0/ 中找到。
在项目src\main\resources下的application.properties配置文件中,增加spring和jpa的配置信息
spring.datasource.driver-class-name=com.gbasedbt.jdbc.Driver
spring.datasource.username=gbasedbt
spring.datasource.password=GBase123
spring.datasource.url=jdbc:gbasedbt-sqli://h01.gbasedbt.com:9089/testdb:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_LOCK_MODE_WAIT=60
# 让控制器输出json字符串格式
spring.jackson.serialization.indent-output=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
# 设置数据库引擎
spring.jpa.database-platform=org.hibernate.dialect.GBasedbtDialect
创建pojo类(com.gbasedbt.springboothibernategbase8s.pojo.User.java)
创建dao接口(com.gbasedbt.springboothibernategbase8s.dao.UserDao.java)
创建service接口(com.gbasedbt.springboothibernategbase8s.service.UserService.java)
创建serviceimpl类(com.gbasedbt.springboothibernategbase8s.serviceimpl.UserServiceImpl.java)
创建Controller类(com.gbasedbt.springboothibernategbase8s.UserController.java)
启动环境
在浏览器中插入用户
在浏览器中查询用户(以id为条件)
在浏览器中删除用户(以id为条件)
后台日志显示相应的语句
评论
spring.jpa.hibernate.ddl-auto=update
报错信息如下:
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Error accessing table metadata
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
... 21 common frames omitted
Caused by: org.hibernate.exception.GenericJDBCException: Error accessing table metadata
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.convertSQLException(AbstractInformationExtractorImpl.java:124)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.getTables(AbstractInformationExtractorImpl.java:577)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:122)
at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:68)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:220)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:123)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:196)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
... 25 common frames omitted
Caused by: java.sql.SQLException: 无 CONNECT 权限。
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3574)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3856)
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2746)
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2671)
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1616)
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1543)
at com.gbasedbt.jdbc.IfxResultSet.a(IfxResultSet.java:215)
at com.gbasedbt.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1253)
at com.gbasedbt.jdbc.IfxStatement.executeQuery(IfxStatement.java:350)
at com.gbasedbt.jdbc.DatabaseMetaDataOracleMode.getTables(DatabaseMetaDataOracleMode.java:799)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processTableResultSet(InformationExtractorJdbcDatabaseMetaDataImpl.java:64)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.getTables(AbstractInformationExtractorImpl.java:565)
... 37 common frames omitted
Caused by: java.sql.SQLException: ISAM 错误:找不到任何记录。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3861)
... 47 common frames omitted
热门帖子
- 12023-05-09浏览数:17640
- 22020-05-11浏览数:10948
- 32023-09-25浏览数:10648
- 42019-04-26浏览数:10613
- 52023-07-04浏览数:9819