java - HSQLDB 2.2 跳过某些实体并且不为它们创建表

标签 java hibernate hsqldb

我正在与 Hibernate 3.5.5 合作和HSQLDB 2.2.9 。我使用 JPA 语义来定义实体并拥有大约 10 个实体。

出于某种未知的原因,HSQLDB 似乎没有选择三个实体,因为我在 HSQLDB 资源管理器中找不到相应的表,并且对这些表的任何引用都会导致 SQL 异常 user lacks privilege or object not found: <TableName> .

所有三个实体的格式与其他实体相同,如下所示:

@Entity
@Table(name = "<TABLE_NAME>")
public class TableName
{
     // private members;

     // protected default constructor for the ORM

     @Id
     @Column(name = <PRIMARY_KEY>)
     // public getter for Primary Key member.

     @Column(name = <COLUMN_NAME>)
     // public getters for all other members;

     // protected setters
}

有人遇到过 HSQLDB 跳过某些实体的类似问题吗?

至少,它始终跳过相同的三个实体,并且我无法弄清楚它们与其他实体有何不同。所有这些实体都是使用 Eclipse 中的 JPA 方面生成的,因此它们之间没有区别。

编辑 1:

我的 persistence.xml 只是这样:

<persistence-unit name="fssPersistenceUnit" transaction-type="RESOURCE_LOCAL">
</persistence-unit>

和 HSQLDB 2.0 用于选取所有用 @Entity 注释的实体,而 HSQLDB 2.2.9 不会选择所有实体,而是保留前面提到的三个实体。

编辑 2: 启用 SQL 语句日志记录后,我看到这三个表的 CREATE TABLE 语句已回滚。我无法获得有关这些创建表语句出现问题的任何进一步信息。此外,CREATE TABLE 语句在打印时会被截断。

最佳答案

HSQLDB 的 Hibernate 方言已在 Hibernate 3.6 及更高版本中更新。目前尚不清楚 3.5.x 是否能与 HSQLDB 2.2.x 配合良好

无论如何,您都可以使用 file: 数据库并将 hsqldb.sqllog=2 属性添加到数据库 URL。这将生成所有执行的 SQL 语句的日志。然后您可以检查缺少的表的语句。

参见指南:

http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html

关于java - HSQLDB 2.2 跳过某些实体并且不为它们创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605835/

相关文章:

java - 逆向工程升级到 Hibernate 3.6 错误

sql - 为什么在使用 "insert select"或 "merge"时不会在每一行触发触发器

java - d 上的 UnknownHostException

java - Mockito - spy 错误 - 将何时记录为调用

Spring Boot 2.0.0 迁移 - JPA 存储库保存问题

java - hibernate CascadeType中的问题

java - 在 HSQLDB 中插入字符串

scala - 有没有办法在 Slick 中创建聚集索引?

java - Applet java 用 chrome 抛出异常

java - 休息 Web 服务 404 错误 - Tomcat Eclipse