int num = 0; 
String hql ="INSERT INTO Person (id,name,password,sex,email) VALUES ('?','?','?','?','?')"; 
Query q = this.session.createQuery(hql); 
q.setString("0", p.getId()); 
q.setString("1", p.getName()); 
q.setString("2", p.getPassword()); 
q.setString("3", p.getSex()); 
q.setString("4", p.getEmail()); 
num = q.executeUpdate();

解决方案 »

  1.   

    把你问号上的单引号都去掉,setString自己就会加的
      

  2.   

    一、去掉单引号
    二、q.setString(0, p.getId()); //设置时从0开始为第一个问号
      

  3.   

    int num = 0;
    String hql ="INSERT INTO Person (id,name,password,sex,email) VALUES (?,?,?,?,?)";
    Query q = this.session.createQuery(hql);
    q.setString(0, p.getId());
    q.setString(1, p.getName());
    q.setString(2, p.getPassword());
    q.setString(3, p.getSex());
    q.setString(4, p.getEmail());
    num = q.executeUpdate();
    去掉引号
      

  4.   

    int num = 0; 
    String hql ="INSERT INTO Person (id,name,password,sex,email) VALUES (?,?,?,?,?)"; 
    Query q = this.session.createSQLQuery(hql); 
    q.setString("id", p.getId()); 
    q.setString("name", p.getName()); 
    q.setString("password", p.getPassword()); 
    q.setString("sex", p.getSex()); 
    q.setString("email", p.getEmail()); 
    num = q.executeUpdate();按照红色部分去改试试!