package com.cstp.hibernate;import java.util.List;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;public class QueryUser { @SuppressWarnings("unchecked")
public static void main(String[] args) {
   Logger log = Logger.getAnonymousLogger();
Configuration cfg = new Configuration().configure();
        SessionFactory factory = cfg.buildSessionFactory();

Session session  = factory.openSession();;

//=================1========================
// SQLQuery sq = session.createSQLQuery("select * from test");
// List<User> list1 = sq.list();
// for(User user:list1){
// log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
// }
// log.info("=======================");
//=================2========================
Criteria ct=session.createCriteria(com.cstp.hibernate.User.class);
ct.add(Restrictions.eq("username", "chenlong"));//where限制条件
List<User> list2 = ct.list();
for(User user:list2){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("=======================");
   //=================3========================
DetachedCriteria dc=DetachedCriteria.forClass(com.cstp.hibernate.User.class);
dc.add(Restrictions.eq("password", "123"));//where限制条件
List<User> list3 = dc.getExecutableCriteria(session).list();
for(User user:list3){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("=======================");
  //=================4========================
  //Query query = session.createQuery("from com.cstp.hibernate.User test");
  //Query query = session.createQuery("from com.cstp.hibernate.User");
Query query = session.createQuery("from User");//3中写法都可以
List<User> list4 = query.list();
for(User user:list4){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
}}
想问一下,1方式该怎么写才对?没注释掉报错:
Hibernate: select * from test
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.cstp.hibernate.User
at com.cstp.hibernate.QueryUser.main(QueryUser.java:27)2,3方式怎么设置我想查询哪几个字段?而不是全部。4方式要求跟的是类名,不是表名。还是按平常写sql语句一样写想查的字段和现在条件吗?麻烦各路神仙,哥哥姐姐,大姨大妈了。