令人发笑的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 20:24:06
对一个实体类持久化,在用“HQL”持久化时有个属性始终不能执行;
实体类:public class User {
private int id;
private String name;
private String phone;
private String address;
private String password;
private Date rdata;
setter and getter;
在执行HQL
“from User u where u.name=”+aaa时出现错误,但执行
“from User u where u.password=”+password屁事没有,完全正常。
曾尝试对name换名字,没效果。

错误如下:(Hibernate应经生成SQL语言)

select
user0_.id as id0_,
user0_.name as name0_,
user0_.password as password0_,
user0_.phone as phone0_,
user0_.address as address0_,
user0_.rdata as rdata0_
from
User user0_
where
user0_.name=aaa

org.hibernate.exception.SQLGrammarException: could not execute query;

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'aaa' in 'where clause';

Hibernate:

“from User u where u.name=”+aaa

aaa赋值不是数字的话,应该是:

"from User u where u.name='"+aaa+"'"

aaa是什么,加上引号了么
补充:我是说u.name='aaa',这里需要加引号

肯定是你aaa的问题3,他把aaa当成一个列了。

aaa没加引号,还有你的映射文件中,
<property column="name" generated="never" lazy="false" name="name"
not-null="true" type="string"/>
类型写全名吧,不然有时报些错误害死人,type="java.lang.String"