Hibernate根据条件从数据库中检索结果

时间:2012-10-29 17:13:59

标签: java sql hibernate

在从数据库中检索结果时,我有点迷失。

我的MemberModel包含4个字段:idusernamepasswordemail。我已经能够成功将其保存到数据库中。

现在我需要检索id成员username等于“测试”。

我尝试了一些事情:

SQLQuery query = session.createSQLQuery("SELECT id FROM members WHERE username = :username");
query.setString("username", username);
List<MemberModel> returnedMembers = query.list();
MemberModel member = returnedMembers.get(0);
int id = member.getId();

但是我收到member.getId()无法转换为int的错误,因为它是MemberModel ...但是getter getId()会返回int

我很困惑。问题是:基于条件(id的值)检索成员username的最简单和最简单的方法是什么?

3 个答案:

答案 0 :(得分:3)

您正在使用本机SQL查询,但应使用HQL query。这意味着您必须将查询更改为:

session.createQuery("SELECT m FROM MemberModel m WHERE m.username = :username")

答案 1 :(得分:1)

我会将您的代码更改为以下内容:

public MemberModel getMember(String username) {
    Query query = sessionFactory.getCurrentSession().createQuery("from  " + MemberModel.class.getName() + " where username = :username ");
    query.setParameter("username", username);
    return (MemberModel) query.uniqueResult();
}

然后你应该能够做到:

MemberModel model = someInstance.getMember("someUsername");
int id = model.getId();

答案 2 :(得分:0)

您也可以使用标准和限制api。

Criteria criteria = session.createCriteria(MemberModel.class);
criteria.add(Restrictions.eq("username", username));
MemberModel member=(MemberModel)criteria.uniqueResult();