H2数据库重置(使用Auto Server)

时间:2012-10-27 08:20:19

标签: hibernate jetty h2

我正在使用H2作为我正在编写的应用程序的开发数据库。该应用程序与Jetty一起部署,并通过Hibernate处理连接。为了构造表,我使用连接URL中的INIT参数来运行语句。

问题是,似乎此连接经常重置,重新运行该脚本(从而删除自上次启动以来存储在数据库中的所有内容)。这似乎几乎在启动后立即发生。

在我的脚本结束时,我添加了以下内容,允许我确认在初始启动应用程序后运行此脚本:

DROP TABLE IF EXISTS system_msg;
CREATE TABLE system_msg (
    id int AUTO_INCREMENT NOT NULL,
    msg_date timestamp NULL,
    msg text NULL,
    PRIMARY KEY(id)
);
INSERT INTO system_msg(msg_date, msg)
VALUES (NOW(), 'Database schema created from DDL script');

在应用程序启动时,我使用Hibernate使用一些核心数据填充应用程序。网页菜单结构是启动时生成的实体之一,通常我只能加载一次页面。第二次加载页面时,我得到这样的结果:

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.example.web.model.front.Menu#1]

这表示在数据库anympore中找不到缓存的实体。如果我使用Web控制台查看H2数据库,我确实可以看到init脚本已经再次运行(查看system_msg表中帖子的时间戳)

我正在使用Ehcache以及二级缓存,但我不确定这是否与问题相关。如果是,则这是当前配置文件:http://pastebin.com/nGG3eENf

我使用Maven(嵌入式)在Eclipse(Indigo)中进行开发。我一开始认为,每当我进行代码更改时,它会重置H2数据库服务器,触发Jetty实例的幕后重置,但它也会在不触及代码的情况下发生。

其他规格:

  • Windows 7
  • H2 v1.3.168
  • Hibernate(和Ehcache)v4.1.7.Final
  • Jetty Maven插件(如果相关?)v8.1.3.v20120416

是否有任何我错过的设置,或者为什么我的H2数据库不断重置的任何其他可能的解释?

0 个答案:

没有答案