后台一表antecedent(前件) 字段为Id,antecedents,consequent(后件) 
实体名为Antecedent 
现想通过consequent查询antecedents 
l中存储若干consequent内容,以每个l中的元素作为consequent进行查询,并输出结果。 
代码如下: 
Antecedent antecedent = new Antecedent(); 
List n = null; 
for (int i = 0; i < l.size(); i++) { 
Session sessionj = HibernateSessionFactory.getSession(); 
boolean b = sessionj.isOpen(); 
Query q = sessionj 
.createQuery("select antecedent.antecedents from Antecedent as antecedent where antecedent.consequent = :con");//怀疑次句写的有毛病 
q.setString("con",l.get(i).toString() ); 
n=q.list(); 
if(!n.isEmpty()){ 
System.out.println(n.get(0)); 

else { 
System.out.println("error"); 

输出的结果为若干error 
如何才能输出正确结果呢?

解决方案 »

  1.   

    你确定hql语句中用的都是Antecedent的属性名吗?如果确定,
    不行将
    "select antecedent.antecedents from Antecedent as antecedent where antecedent.consequent = :con"
    改成笨点儿的
    "select antecedent.antecedents from Antecedent as antecedent where antecedent.consequent ="
    + con
      

  2.   

    毛病肯定是SQL
    select antecedent.antecedents 我觉得不用这  之前自己定义函数  
      

  3.   

    用顺序占位符啊
    select antecedent.antecedents from Antecedent as antecedent where antecedent.consequent =?
    然后query.setString(0,i.toString());
      

  4.   

    Query q = sessionj 
    .createQuery("select antecedent.antecedents from Antecedent as antecedent where antecedent.consequent = :con");//怀疑次句写的有毛病 
    q.setString("con",l.get(i).toString() ); 
    n=q.list(); 
    //加一句试下.
    sessionj.close(); 
    ....