0

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

MyMemberModel由 4 个字段组成:idusername和。我已经能够成功地将其保存到数据库中。passwordemail

现在我需要检索一个等于“测试”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......但是 gettergetId()返回int

我很困惑。id问题是:根据条件(的值)检索成员的最简单快捷的方法是什么username

4

3 回答 3

3

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

session.createQuery("SELECT m FROM MemberModel m WHERE m.username = :username")
于 2012-10-29T17:18:55.757 回答
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();
于 2012-10-29T17:20:34.193 回答
0

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

Criteria criteria = session.createCriteria(MemberModel.class);
criteria.add(Restrictions.eq("username", username));
MemberModel member=(MemberModel)criteria.uniqueResult();
于 2012-10-30T06:21:20.840 回答