0

我有以下标准,请告知如何将以下标准转换为 HQL ,因为我想使用 HQL

public List<tttBook> findtooks() {

            List<tttBook> tooks =null;
            Criteria criteria = session.createCriteria(tttBook.class);
            ProjectionList proList = Projections.projectionList();
            proList.add(Projections.property("Id"));
            proList.add(Projections.property("longName"));
            tooks = criteria.list();
            return tooks;

        }

还请让我知道在上述标准中出了什么问题,因为现在它正在获取对象的所有属性并且需要很多时间我认为我的预测实现有问题。

4

2 回答 2

0

也许是这样的

public List<tttBook> findtooks() {
    Session s = HiberUtil.getSessionFactory().openSession();
    List<tttBook> tooks =new ArrayList<tttBook>;
    List result = session.createQuery("select a.Id, a.longName from tttBook t").List();
    for(int i =0; i< result.size();i++){
        Object[] objects = result.get(i);
        tttBook t = new tttBook();
        t.setId(objects[0]);
        t.setLongName(objects[1]);
    tooks.add(t);
    }

    return tooks;

}
于 2013-08-04T09:57:12.117 回答
0

您可以在对象中创建另一个构造函数tttBook。此外,您应该遵循命名约定并调用以大写字母开头的类和以小写字母开头的属性。

package yourpath;

public class TttBook {
   private Long id;
   private String longName;

   public TttBook(Long id, String longName) {
      this.id = id;
      this.longName = longName;
   }

   // getters, setters
}

询问

List<TttBook > list = (List<TttBook >) session.createQuery("select 
   new yourpath.TttBook(id, longName) from TttBook").list();
于 2013-08-04T12:16:15.390 回答