【问题标题】:Generating HSQLDB tables in memory from JPA/EclipseLink (no files)从 JPA/EclipseLink(无文件)在内存中生成 HSQLDB 表
【发布时间】:2012-10-22 11:31:51
【问题描述】:

我有带有 EclipseLink 2.4 的 JPA2,我正在尝试使用 HSQLDB 实现一个内存数据库。我已经能够使用

创建 hsqldb 的文件实现
jdbc:hsqldb:file:./databases/test;shutdown=true;files_readonly=true

但是当我尝试使用 jdbc:hsqldb:mem:tableName 时,我收到以下消息:


堆栈跟踪:

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse   
Persistence Services - 2.4.0.v20120608-r11652):  
  org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object
  not found: EFFECTIVITY

Error Code: -5501
Call: INSERT INTO EFFECTIVITY (HULL) VALUES (?)
bind => [1 parameter bound]
Query: InsertObjectQuery(101)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush
       (EntityManagerImpl.java:804)
at com.gdeb.touchtable.db.TestJPAEntities.testTTTouch(TestJPAEntities.java:93)
..............
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found:
 EFFECTIVITY
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaManager.getTable(Unknown Source)
at org.hsqldb.ParserDQL.readTableName(Unknown Source)
at org.hsqldb.ParserDQL.readRangeVariableForDataChange(Unknown Source)
at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 63 more

根据我的阅读,数据模型应该是自动生成的,但我只看到了 Hibernate 的示例。有没有办法链接 JPA 数据模型并使用 HSQLDB 的内存模式创建它?

【问题讨论】:

  • 我正在几个不同的环境中进行测试,之后我不需要保留数据,也不需要文件堵塞存储库,所以 HSQLDB 似乎是一个很好的方法.
  • 我没有使用内存 HSQLDB 和 JPA 的经验。但是我已经成功使用了 H2 数据库。
  • @WernerVesterås H2 看起来也很有希望 :)

标签: java jpa eclipselink hsqldb in-memory-database


【解决方案1】:

如果缺少表,您需要将 eclipselink.ddl-generation 属性设置为“create-tables”,以便让 Eclipselink 为您创建它们。此处发布了一个示例:http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDL

【讨论】:

  • 对于其他有同样问题的人,您可能必须指定“目标数据库”属性:eclipselink.target-database,即 HSQLDB 的org.eclipse.persistence.platform.database.HSQLPlatform
  • 我们应该在哪里使用这个链接属性。请帮助我。
猜你喜欢
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
相关资源
最近更新 更多