论org.hibernate.query设置参数的下标到底从几开始(0 | 1)

//见下面测试成功的代码 所以说 org.hibernate.query 接口的实现类的

//诸如:setInteger(int i, int j) : Query - Query

//setString(int i, String s) : Query - Query

//这样的方法中的第一个参数——?下标位置是从0开始的

public List tryToTest() {
  String sql = "from ScmsCmain cmain where cmain.certiNo = ? and cmain.businessNature = ? ";
  org.hibernate.Query query = this.getSession().createQuery(sql);
  query.setString(0, "PDZA201321020000077727");
  query.setString(1, "111111111");
  return query.list();
 }

 

//还有org.hibernate.Session的createSQLQuery方法得到的org.hibernate.SQLQuery接口(当然SQLQuery extends org.hibernate.Query)

//的实现的诸如setInteger(int i, int j) : Query - Query、 setString(int i, String s) : Query - Query 等设置入参的第一个描述?下标的参数也都是从0开始的

 

//需要注意的是,这和jdbc 的java.sql.PreparedStatement接口的诸如:setString(int parameterIndex, String x) : void - PreparedStatement

//setInt(int parameterIndex, int x) : void - PreparedStatement 的方法是不同的,见下面的代码:

String hqlSelectsum = "select nvl(sum(c.chgcostrate),0) costrate from scmsbatchdetail c, scmsbatchmain d where c.batchno = d.batchno and d.auditstatus = '2' and c.policyno = ? ";
pstmt = connection.prepareStatement(hqlSelectsum);
pstmt.setString(1, policyno);

//PreparedStatement 类的 通过?设置入参的方法的下标则是从1开始的

 

你可能感兴趣的:(论org.hibernate.query设置参数的下标到底从几开始(0 | 1))