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语句一样写想查的字段和现在条件吗?麻烦各路神仙,哥哥姐姐,大姨大妈了。
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语句一样写想查的字段和现在条件吗?麻烦各路神仙,哥哥姐姐,大姨大妈了。
2.3.不清楚,同问
4.hql是面向对象形式的查询语句,与sql略有不同,所有from的是对象名,当然不用把类路径也写出来