我需要从表中获取单个单元格值。我正在使用Spring MVC进行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页面..
答案 0 :(得分:4)
要获得单个结果,请使用getFirstResult()
或getSingleResult()
。 注意由于以下原因,这两种情况都不是特别有用:
getFirstResult()
将返回第一个元素
您的查询返回的集合,可能是也可能不是
你正在寻找的元素。getUniqueResult()
期望返回查询
完全一个项目,如果返回的集合为空或有多个条目,则会引发异常。 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
答案 1 :(得分:0)
首先,您必须为:asd设置值,但这可能很清楚。
然后你去执行查询并转换结果。因为您似乎希望此查询返回单个值,所以可以通过Query.uniqueResult执行。如果您想在假设一个且只有一个非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();
答案 2 :(得分:0)
在Controller中编写以下代码
// 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>