在从数据库中检索结果时,我有点迷失。
我的MemberModel
包含4个字段:id
,username
,password
和email
。我已经能够成功将其保存到数据库中。
现在我需要检索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
的最简单和最简单的方法是什么?
答案 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();