java - 我的 H2 表格在哪里?

标签 java jpa-2.0 h2 wildfly-8

我将 Web 应用程序部署到 WildFly 8.02 Final 服务器。我使用带有 jndi namespace 的服务器附带的默认开箱即用数据源:

java:jboss/datasources/ExampleDS

我使用默认网址:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

从IntelliJ IDEA数据库客户端工具或其他客户端应用程序访问H2(我使用url连接,因为通过默认端口的tcp连接不起作用)。

该应用程序基本上是一个空的 WAR,仅包含实体 bean 和 persistence.xml 文件。我打算纯粹测试根据我的注释将在底层数据源中创建哪些表。

事情是这样的:当我在 persistence.xml 中设置时:

<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>

war 已成功部署,但是当我通过任何客户端工具连接到 H2 数据源时,我只能看到以下预定义的表:

SELECT * FROM INFORMATION_SCHEMA.TABLES

我可以通过客户端工具创建表,并且可以通过之前的 SQL 查询来跟踪它们的存在。所以看起来表并不是由 JPA 框架创建的。

但是当我将 persistence.xml 更改为不同的架构创建模式时:

<property name="javax.persistence.schema-generation.database.action" value="create"/>

部署将失败,并出现 jdbc 异常,告知 JPA 尝试创建已经存在的表,但同时客户端工具仍然不显示任何用户创建的表。

谢谢。

最佳答案

看看http://www.h2database.com/html/features.html#in_memory_databases :

To access an in-memory database from another process or from another computer, 
you need to start a TCP server in the same process as the in-memory database 
was created. The other processes then need to access the database over TCP/IP 
or TLS, using a database URL such as: jdbc:h2:tcp://localhost/mem:db1.

看这里的例子:

H2 database in memory mode cannot be accessed by Console

关于java - 我的 H2 表格在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804828/

相关文章:

java - Hibernate 4.0 : javax. persistence.criteria.Path.get 在指定复合键字段时失败

jpa-2.0 - 在 jpa criteria api 中使用子查询

java - ReadyStatement "like"模式匹配不适用于文件路径

java - 我想要一个 Java 阿拉伯语词干分析器

java - 如何在ajax中使用json数组? (java)

java - Jenkins 构建和部署

java - 是否可以在 Java 8 中编写 JavaScript 箭头函数?

JPA多项选择查询

java - H2 问题 : request works in H2 console, 不在 jUnit 测试中

spring - 即使 h2 在 MySQL 模式下运行,Liquibase 也会将 h2 检测为数据库 [Spring boot]