Как получить значение String из запроса SQL в Grails? - PullRequest
1 голос
/ 22 сентября 2011

Мне нужно вернуть значение 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
}

Но URL-адрес строки всегда интерпретируется (и я напечатал его для тестирования) как:

url:: 8080 / app2 / api / productionOrder / true

Мне нужно, чтобы строка idProdOrder возвращала свое значение, а не логическое значение. Как я могу это сделать?

Заранее спасибо,

1 Ответ

0 голосов
/ 22 сентября 2011

Вместо выполнения 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.Документация здесь .Единственное, что нужно перепроверить, это имя возвращаемой записи. Я не уверен, что это будет делать, так как вы делаете production_order.idProdOrder

...