Java HQL org.hsqldb.HsqlException:用户缺少权限或找不到对象
Posted
技术标签:
【中文标题】Java HQL org.hsqldb.HsqlException:用户缺少权限或找不到对象【英文标题】:Java HQL org.hsqldb.HsqlException: user lacks privilege or object not found 【发布时间】:2014-08-20 10:14:09 【问题描述】:我正在使用 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 查询来查找具有已保存实际值的对象,但问题在于查找不存在的值。
【问题讨论】:
有同样的问题,但对我来说,解决方案只是添加正确的方言。 (以前有mysql),因为我已经重新连接到那个。谢谢 【参考方案1】:FROM Message m WHERE m.address = address2
此查询查找其address
字段等于其address2
字段的消息。但是消息没有address2
字段。如果您的意图是查找 address
字段值为“address2”的所有消息,则查询为
FROM Message m WHERE m.address = 'address2'
【讨论】:
【参考方案2】:尝试:
getHibernateTemplate().find("FROM Message m WHERE m.address = 'address2'");
【讨论】:
【参考方案3】:检查您的数据库 URL:
你可能需要放数据库的完整路径
例如, jdbc:hsqldb:file:C:/Users/10617136/dev/hsqldb-2.3.2/hsqldb/bin/test
【讨论】:
【参考方案4】:我觉得有线。在我将字段名称从profileImage
更改为image
后,即全部变为小写,问题就解决了。
【讨论】:
以上是关于Java HQL org.hsqldb.HsqlException:用户缺少权限或找不到对象的主要内容,如果未能解决你的问题,请参考以下文章
如何结合 java.util.Calendar 和 HQL 之间
java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:新闻未映射[来自新闻,其中