String sql = "select * from tableName" ; //ok
String sql = "select ID from tableName" ; //报错..org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not execute query;
bad SQL grammar [ select ID from T_TEST ];
nested exception is java.sql.SQLException: 列名无效生成的sql语句却是可以执行.数据库的字段是"ID"因为是用SQLQuery query = session.createSQLQuery(sql);
所以和实体对象没关系吧,再说我也做了映射,用select * 就可以查到全部.为什么select id 就不行呢??
String sql = "select ID from tableName" ; //报错..org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not execute query;
bad SQL grammar [ select ID from T_TEST ];
nested exception is java.sql.SQLException: 列名无效生成的sql语句却是可以执行.数据库的字段是"ID"因为是用SQLQuery query = session.createSQLQuery(sql);
所以和实体对象没关系吧,再说我也做了映射,用select * 就可以查到全部.为什么select id 就不行呢??
public tableName(Long id){
this.id=id;
}
@Entity
@Table(name="T_TEST")
public class User {
private String id ;
private String name ; @Id
@GenericGenerator(name="idGenerator", strategy="uuid")
@GeneratedValue(generator="idGenerator")
@Column(name="ID")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name="NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
起了别名也不行,如果写成select id,name就可以
sql = “select id from tabName”
lz,id一般是数据库关键字,你可以给表一个别名,再用别名.id 比如:String sql = "select n.id from tableName n" ;
其中包含id,name
那么查询语句应为 select User.id from User如果只是查询的话,select可以忽略不写。
一般都是这么来的, t相当于一个table实例