Java 实体无法保存在 HSQLDB 中创建的脚本中 table

Java Entity can't be persisted in the script created table in HSQLDB

我有一个使用 Oracle DB 的应用程序。 对于单元测试,我使用的是 HSQLDB。

我以这种方式在 HSQLDB 中使用脚本创建了产品 table:

CREATE TABLE PRODUCT
(
    ID INTEGER IDENTITY PRIMARY KEY,
    NAME VARCHAR (73)
);

我有一个实体:

@Entity
@Table(name = "PRODUCT")
public class Product implements Serializable {
    @Id
    @Column(name = "ID", nullable = false)
    private int id;

    @Column(name = "NAME")
    private String name;

    ... Getters, Setters...
}

问题是当我尝试保留产品时(当然是在我创建 table 之后)我收到此错误:

javax.persistence.RollbackException: Error while committing the transaction
...
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PRODUCT
...

您知道为什么 java 实体看不到 table 吗? 谢谢指教!

这通常是因为您应用中的数据库 URL 不正确。您在一个数据库中创建了 table,但您的应用程序指向另一个空数据库。使用绝对路径,或基于用户主目录的路径,或系统 属性.

的目录路径

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

我遇到了类似的问题,我在脚本的第一行使用以下命令解决了问题:

create schema sce AUTHORIZATION DBA;

在我的项目中,表是由hibernate创建的,在创建阶段出现了同样的错误。