当前位置: 首页 > 知识库问答 >
问题:

Spring JPA H2数据库获取组织。h2。jdbc。未找到JdbcSQLSyntaxErrorException架构“MYSCHEMA”

经和洽
2023-03-14

我将Spring boot JPA实体定义为:

@Entity
@Immutable
@Table(name = "CAR", schema="MYSCHEMA") //DB2 requires schema so this works on DB2 but not on H2
//@Table(name = "CAR") // this works on H2 but not on DB2 as it requires schema
public class CarEntity implements Serializable {
...

上述方法在DB2中效果良好,但在H2中效果不佳。

在application.properties,我有以下设置:

spring.datasource.url=jdbc:h2:mem:MYDB"
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.validationQuery=SELECT 1

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

当我做maven的时候

原因:org。h2。jdbc。JdbcSQLSyntaxErrorException:未找到架构“MYSCHEMA”;SQL语句:公共类CarEntity实现可序列化的{。。。

我希望在H2上创建模式,因为我在我的@Table注释中提供了它,但这并没有发生。我错过了什么?

共有1个答案

宰父跃
2023-03-14

找到了解决这个问题的方法。由于DB2需要模式,我改为:

标记实体

@Entity
@Immutable
@Table(name = "CAR") 
public class CarEntity implements Serializable {

但是对于DB2 url,在Spring数据源url的末尾添加:电流模式=MY_SCHEMA;如下:

spring.datasource.url=jdbc:db2://db2_server:port//MY_DB:currentSchema=MY_SCHEMA;

需要注意的是":"MY_DB和当前模式之间的分隔符以及结尾处的";"。

对于H2,我不关心模式,因为它是内存数据库,我只是用来测试结果endpoint,我的实体@Table注释和数据源url中都没有任何模式指示:

Spring数据源。url=jdbc:h2:mem:MY_DB

 类似资料:
  • 这是WildFly 10.0中Hibernate版本不匹配的后续问题。 为了完整起见,请简要地重新说明问题。我有两个项目,一个是普通java项目(使用maven):,另一个是非maven动态web项目:。后者充当顶部的Rest层。 使用hibernate没有任何问题。它定义了(在中)如下所示: 和现在都在使用,分别使用maven和WildFly模块安装,如下所述。 然而,现在当我将部署到WildF

  • 我试图用内存中的数据库来测试JDBC客户机,这样我就可以用单元测试来测试各种情况。 以下是我目前掌握的信息: 测试目录中的Application.Properties如下所示:

  • 问题内容: 我目前正在使用jOOQ访问Java中的嵌入式H2数据库以生成表类等。我目前可以执行查询,例如 在我的代码中,返回结果等。 但是我不能查询信息架构。我可以使用H2控制台正常访问它,并且为给定的information_schema表创建视图可以正常工作。我的问题是我应该如何访问information_schema例如执行查询,例如 从我的Java代码中?我是否必须创建视图,是否可以通过jo

  • 我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库

  • 我有一个名为user的实体,如下所示: 我还有一个用户摘要类,它旨在返回以进行分页和排序: 这与所有其他实体一起似乎在h2中很好地初始化,从控制台我看到如下内容: 和 甚至: 现在,我已经设置了控制器、服务和存储库... 控制器: 服务:公共接口UserService扩展了UserDetailsService{ 存储库:公共界面UserRepository扩展了JpaRepository{ 最后,

  • 我正在尝试一个使用H2的示例。但我无法创建内存中的DB。运行以下程序时,我只收到一条错误消息: Java语言sql。SQLException:在java上找不到适合jdbc:h2:mem的驱动程序。sql/java。sql。DriverManager。java上的getConnection(DriverManager.java:702)。sql/java。sql。DriverManager。数据库