【问题标题】:EclipseLink and H2EclipseLink 和 H2
【发布时间】:2013-10-06 15:09:54
【问题描述】:

我尝试在 Eclipse IDE 中将 EclipseLink JPA 提供程序与 H2 DBMS 一起使用。

当我创建一个新的 JPA 项目并填充数据 (URL="jdbc:h2:~/test",Username="user",password="") 连接类型:资源本地(我使用嵌入式模式) 我得到两件奇怪的事情:

  1. 当我尝试从表中创建实体时,我得到一个空白表列表
  2. 我在@Entity 符号附近收到一条错误消息,指出“无法为实体 e1 解析目录用户”或“无法为实体 e1 解析架构用户”,具体取决于保留目录的默认值或更改它在创建项目时,其中 User 是数据库用户名

数据库已经包含在 Firefox 中使用 h2 控制台的表

这些问题的原因是什么,我该如何解决?你有任何页面或书籍可以帮助处理persistence.xml文件(除了oracle官方网站)?

【问题讨论】:

  • 数据库 URL 看起来错误:缺少斜杠。应该是jdbc:h2:~/test
  • 对不起。在这里输入时出错。顺便说一句,这仍然有效并创建新数据库:)
  • 好的。这很重要,因为jdbc:h2:~/test 是当前用户主目录中的数据库,jdbc:h2:~test 是当前工作目录(您启动应用程序的位置)中的数据库,文件名为 ~test

标签: java jpa eclipselink h2


【解决方案1】:

EclipseLink 不会为您创建数据库表,除非您明确告诉它这样做。

the documentation中描述了这样做的方法

EclipseLink 可用于为持久性单元自动生成表和数据库模式。这是通过“eclipselink.ddl-generation”持久单元属性完成的,设置为“create-tables”或“drop-and-create-tables”。将为该持久性单元中定义的所有类生成表和约束。

【讨论】:

  • 我没有说从实体创建表我说的是从表创建实体
  • 如果您从不创建任何表,H2 数据库将如何包含它们?读心术?黑魔法?
  • 数据库已经包含表,我在firefox中使用它的控制台创建了它们
  • URL jdbc:h2:~/test 是相对于应用程序当前目录的数据库文件的 URL。见h2database.com/html/features.html#embedded_databases。因此,您可能没有连接到与控制台中的数据库相同的数据库。
【解决方案2】:

诀窍是在创建 JPA 项目时设置正确的目录,然后一切都运行得很好

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2013-01-01
    • 1970-01-01
    • 2018-05-09
    • 2012-07-28
    • 2018-02-01
    相关资源
    最近更新 更多