2

テーブルから単一のセル値を取得する必要があります。そして、SpringMVCでHibernateを使用しています。

私がしたことは:

Session s = getSessionFactory().getCurrentSession();  
query q= s.createQuery("select xxx from abc where asd=:asd");

<c:choose> <c:when> <c:otherwise>ここで、この単一の値を文字列変数に保存し、この文字列変数を使用して、タグを使用してjspページ内の他の文字列と比較する必要があります...

これは私が今持っているものです。

@Transactional
public String getUseNis(String code) {
Session s = getSessionFactory().getCurrentSession();
Query q = s.createQuery("select useNis from tle_location where code = :code");
q.setString("code", code);
String result = (String) q.uniqueResult();
return result; 

jspページの戻り値を使用して、yesまたはnoのいずれかを確認する必要があります...それをjspページに渡す方法。

4

3 に答える 3

5

単一の結果を取得するには、またはのいずれgetFirstResult()かを使用しますgetSingleResult()。これらの理由から、どちらもあなたのケースでは特に有用ではないことに注意してください。

  • 呼び出すgetFirstResult()と、クエリによって返されたコレクションの最初の要素が返されます。これは、探している要素である場合とそうでない場合があります。
  • 呼び出すgetUniqueResult()と、クエリが 正確に1つのアイテムを返すことが期待され、返されたコレクションが空であるか、複数のエントリがある場合、例外がスローされます。

のイラストuniqueResult()

//sessionFactory = getHibernateTemplate().getSessionFactory();
Session session = getSessionFactory().getCurrentSession();
Query query = session.createQuery("select value from table where ...");
query.setParameters("param1", value1);
result = (Type) query.uniqueResult(); //The type is you desired result type.
//test for null here if needed

クエリが単一の結果のみを返すことを確認してください。一致する結果が複数見つかった場合はスローNonUniqueResultExceptionされます(したがってquery.setMaxResults(1);、より適切です)。

http://www.java2s.com/Code/Java/Hibernate/UniqueResultHQL.htm

于 2012-07-17T09:04:48.213 に答える
0

まず、:asdの値を設定する必要がありますが、それはおそらく明らかです。

次に、クエリを実行して結果を変換します。このクエリは単一の値を返すことを期待しているように見えるため、Query.uniqueResultを介して実行できます。null以外の結果が1つだけであるという仮定が間違っていた場合に特定のアクションを実行する場合は、返されたnull値に反応するか、それに応じてNonUniqueResultExceptionをスローしてください。

クエリの結果が文字列にどのように変換されるかは、もちろんxxx、文字列表示のタイプと推奨される形式によって異なります。いくつかの例を次に示します。

//type of xxx is already string
String result = (String) q.uniqueResult();

//type of xxx is Integer
Integer res = (Integer) q.uniqueResult();
String result = res.toString();
于 2012-07-16T19:13:51.000 に答える
0

コントローラに以下のコードを記述します

// Fetch the result by executing query and store it into string variable as
String typeofpayment = serviceObj.getValueFromDB();
model.addAttribute("typeofpayment",typeofpayment); // This will pass attribute to jsp page

これで、jspで使用できます

<c:set var="typeOfPaymentVar" value="${typeofpayment}" scope="request" />
<c:choose>
     <c:when test='${typeOfPaymentVar=="cash"}'>
          CASH
     </c:when>
     <c:otherwise>
          OTHER MODE OF PAYMENT
     </c:otherwise>
</c:choose>
于 2012-07-17T08:17:07.750 に答える