我将Web应用程序部署到WildFly 8.02 Final服务器。我使用具有jndi名称空间的服务器随附的默认开箱即用的DataSource:
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"/>
战争已成功部署,但是当我通过任何客户端工具连接到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.
请看这里的例子:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句