Java HQL org.hsqldb.HsqlException:user缺少未找到的权限或对象

时间:2014-08-20 10:14:10

标签: java spring hibernate hql hsqldb

我正在使用Spring 3和Hibernate 3.我正在使用DAO设计模式并使用HQL来查询数据库。但是,当搜索字段不存在的数据时,我得到以下异常:

org.hsqldb.HsqlException: user lacks privilege or object not found: ADDRESS2

我使用Liquidbase来管理创建表的数据库XML模式。以下是示例代码:

@Entity
@Table(name = "message")
public class Message() {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column(length = 100, nullable = false)
    private String address;

    public Message() {

    }

    // getters and setters
}

DAO使用以下HQL:

 getHibernateTemplate().find("FROM Message m WHERE m.address = address2");

正在设置以下属性:

jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver
jdbc.url=jdbc:hsqldb:mem:testdb'shutdown=true
jdbc.username=sa
jdbc.password=
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=validate

我找不到解决方案。我可以成功插入记录并使用相同的HQL查询来查找具有已保存实际值的对象,但问题在于找到不存在的值。

4 个答案:

答案 0 :(得分:2)

FROM Message m WHERE m.address = address2

此查询会查找address字段等于其address2字段的邮件。但是消息不具有address2字段。如果您打算查找address字段的值为"地址2"的所有邮件,则查询为

FROM Message m WHERE m.address = 'address2'

答案 1 :(得分:0)

尝试:

 getHibernateTemplate().find("FROM Message m WHERE m.address = 'address2'");

答案 2 :(得分:0)

检查数据库网址:

您可能需要填写数据库的完整路径

例如, JDBC:HSQLDB:文件:C:/Users/10617136/dev/hsqldb-2.3.2/hsqldb/bin/test

答案 3 :(得分:0)

我觉得有线。将我的字段名称从profileImage更改为image后,即将其全部设为小写,问题就解决了。