HQL中出现意外的令牌冒号

时间:2013-11-22 08:53:32

标签: hibernate

我是Hibernate的新手,我正在尝试执行以下操作但是出现unexpected token: :错误。这肯定是一个菜鸟错误,因为我是一个菜鸟。我已经使用Vehicle类填充了表。当我不使用命名参数时,此代码工作正常。但我想知道它为什么不起作用。

import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.dono.util.SessionManager;
import org.javabrains.dono.dto.cascade.Vehicle;

public class HQL {
    public static void main(String[] args) {

    Session session = SessionManager.configureSessionFactory().openSession();
    session.beginTransaction();
    /*for (int i = 1; i <=10; i++) {
        Vehicle vehicle = new Vehicle();
        vehicle.setVehicleName("Car no. "+i);
        session.save(vehicle);
    }*/
    String q="from :tabl";
    Query query= session.createQuery(q);
    query.setString("tabl", "Vehicle");
    query.setFirstResult(3);
    query.setMaxResults(2);
    List<Vehicle> vehicles= (List<Vehicle>) query.list();
    session.getTransaction().commit();
    session.close();    
    for (Iterator<Vehicle> i = vehicles.iterator(); i.hasNext();) {
        Vehicle car = (Vehicle) i.next();
        System.out.println(car.getVehicleName());
    }

    }
}

1 个答案:

答案 0 :(得分:0)

该参数通常在where子句中使用。

错:

session.creteQuery("from :tabl");

右:

session.createQuery("from Vehicle");

使用参数:

Query qry = session.createQuery("from Vehicle where id = :id");
qry.setParameter("id", yourId);