我需要返回一个String值,以便可以通过Restful从另一个应用程序构建对象。我的代码部分包括以下代码段:
def searchProductionOrder (String sequentialNumber) {
def sql = Sql.newInstance(dbUrl, user, pwd, driverName)
String idProdOrder = sql.execute("""
SELECT production_order.idProdOrder
FROM production_order production_order
WHERE production_order.sequential_number LIKE ${sequentialNumber}
""").toString();
String url = ":8080/app2/api/productionOrder/"+idProdOrder
// call to Restful service
return Order
}
但是String url始终被解释为(我将其打印以进行测试)为:
url: :8080/app2/api/productionOrder/true
我需要idProdOrder字符串返回其值,而不是 bool(boolean) 值。我该怎么办?
提前致谢,
最佳答案
而不是执行总是返回 bool(boolean) 值的execute,而是执行以下操作
def searchProductionOrder (String sequentialNumber) {
def sql = Sql.newInstance(dbUrl, user, pwd, driverName)
String idProdOrders = sql.rows("""
SELECT production_order.idProdOrder
FROM production_order production_order
WHERE production_order.sequential_number LIKE ${sequentialNumber}
""")
if(idProdOrders.size()==1)
{
String url = ":8080/app2/api/productionOrder/"+idProdOrders[0].idProdOrder
// call to Restful service
return Order
}
else
{
//You have either no results from the query or more then 1 so do something
}
}
如果要确保对每个结果都做了一些操作,则也可以使用sql.eachRow。该文档为here。唯一要仔细检查的是它返回的条目的名称,我不确定它会做什么,因为您执行production_order.idProdOrder
关于sql - 如何从Grails中的SQL查询获取字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7515152/