2
Query qry = session.createQuery("From RegistrationBean where ? = ?");
qry.setString(0,searchCriteria);
qry.setString(1,searchField);
searchList =(ArrayList<RegistrationBean>) qry.list();

RegistrationBeanエンティティクラスにはuserName, address, ageフィールドがあります.上記の単一のクエリを使用して、などの検索条件でユーザーを検索したいuserName, address...しかし、ユーザーが存在するにもかかわらず、クエリはゼロの結果を返します..

どうしたの?

4

2 に答える 2

1

両方のパラメーターが 0 の位置に設定されており、2 番目のパラメーターは設定されていません。位置パラメータは順番に設定する必要があります。

qry.setParameter(0,searchCriteria);
qry.setParameter(1,searchField);

ただし、フィールド名は次の方法で渡す必要があります

String queryString = "from RegistrationBean as model where model." + propertyName   + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
于 2012-11-26T09:03:19.433 に答える
0

次の方法で試してください。

Query qry = session.createQuery("select * from RegistrationBean where :searchCrit = :searchValue");
qry.setString(":searchCrit",searchCriteria);
qry.setString(":searchValue",searchField);
searchList =(ArrayList<RegistrationBean>) qry.list();

インデックスを設定する代わりに、このように使用する方が適切です (問題は、両方を 0 に設定することです)。これは、クエリで何かを変更した場合、後でセッターを変更する必要がある場合があるためです。

于 2012-11-26T09:03:11.153 に答える