我正在使用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查询来查找具有已保存实际值的对象,但问题在于找到不存在的值。
答案 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
后,即将其全部设为小写,问题就解决了。