0

データベースから結果を取得することになると、私は少し迷っています。

Myは、 、、およびMemberModelの 4 つのフィールドで構成されます。データベースに正常に保存できました。idusernamepasswordemail

ここで、 "Test" に等しい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...しかし、ゲッターは.getId()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 に答える