我有一个实体类,
user{
id,
username,
userpass
}
我想根据username和userpass查找目标,username是唯一索引,能不能不用hql语句来查?

解决方案 »

  1.   

    session.get()有4个重载方法
    get(class clazz,Serializable s);
    get(String str,Serializable s);
    get(class clazz,Serializable s, lockmode lm);
    get(String str,Serializable s, lockmode lm);
    都是什么意思啊
      

  2.   

    Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc
    List list=session.CreateQuery(hql).list();
      

  3.   

    不用HQL而用SQLSQLQuery sq = session.createSQLQuery("select * from 实际表名 where 实际字段名username = 'Smoke' and 实际的字段名userpass = '123' ");
    //sq.addEntity(User.class);//查询结果转换成对象
    List list = sq.list();
      

  4.   

    4个重载是方法名相同而参数不同
    get(class clazz,Serializable s);
    你的clazz应该是实体bean的类名比如User.class,
    没记错后面应该是序列化的id号
      

  5.   


    似乎hibernate3以后的版本不能正常使用sql查询了。
      

  6.   

    就是获得对象啊 还有是什么意思吗?记得是不支持延迟加载的
    load是支持的
      

  7.   

    前面两个参数好像就这点区别...
    session.get("com.xxx.dao.Student", 1);
    session.get(Student.class, 1);最后一个参数我只见过用在悲观锁上..
    LockMode是 定义了Hibernate所需的不同的锁定级别。一个锁定 可以通过以下的机制来设置: 
    当Hibernate更新或者插入一行记录的时候,锁定级别自动设置为LockMode.WRITE。 
    当用户显式的使用数据库支持的SQL格式SELECT ... FOR UPDATE 发送SQL的时候,锁定级别设置为LockMode.UPGRADE 
    当用户显式的使用Oracle数据库的SQL语句SELECT ... FOR UPDATE NOWAIT 的时候,锁定级别设置LockMode.UPGRADE_NOWAIT 
    当Hibernate在“可重复读”或者是“序列化”数据库隔离级别下读取数据的时候,锁定模式 自动设置为LockMode.READ。这种模式也可以通过用户显式指定进行设置。 
    LockMode.NONE 代表无需锁定。
      

  8.   

    user u =(user)session.get(user.class,"username");
      

  9.   

    不是,如果username不是主键呢?那个是按主键查询的吧。有没有指定某列的查询呢?
      

  10.   

    目前貌似没有。只能自己去写hql
    String hql ="from A a where a.username=?";
    uniqueResult(hql,"张三");
    public Object uniqueResult(String hql, Object... args) {
    Query q = getSession().createQuery(hql);
    for (int i = 0; i < args.length; i++) {
    q.setParameter(i, args[i]);
    }
    q.setMaxResults(1);
    Object obj=q.uniqueResult();
    return obj;
    }
      

  11.   

    如果根据ID来就更好了
    User user = session.get(User.class,userId);
      

  12.   

    可以用Find,find(sql),返回一个List