Interesting idea. I'll look into adding something like this (configurable at
boot and/or runtime) into scalajpa.

Derek

On 2/9/09, Oliver <ola...@gmail.com> wrote:
>
>
> Hi Derek and interested parties
>
> I know there is a showSQL option that can be enabled with
> JTA/Hibernate but I find the output verbose and uninformative about
> parameter replacement.
>
> So, I have my own ScalaQuery that allows simple debugging - the main
> differences are -
>
>     var queryParams: List[Pair[String,Any]] = Nil
>    /*  the following method needs to be called by the various
> SetParameter methods */
>     def addParam(one: String,two: Any) = {
>         query.setParameter(one, two)
>         queryParams = (one, two) :: queryParams
>     }
>     /*
>      output the query with parameters substitued, for debugging ...
>      */
>     def getQueryWithParams() = {
>         var q = queryStr
>         try {
>             queryParams.foreach{v =>
>                 var rep = v._2 match {
>                     case d: Date => "'"+SUtil.formatDate(d,
> "dd/MM/yyyy")+"'"
>                     case s: String => "'"+s+"'"
>                     case x => if (x==null) "" else x.toString
>                 }
>                 rep = rep.replaceAll("\\$", "ddDollardd") // stupid bug
>                 q = q.replaceAll(":"+v._1, rep)
>             }
>             q.replaceAll("ddDollardd", "\\$")
>         } catch {
>             case e: Exception => q+" PARAMS "+queryParams+ " EXCEPTION "+e
>         }
>     }
>
> With this I can log the query via
>   Log.info(emailQuery.getQueryWithParams())
>
> Better still, (assuming execOnce exists in a utility object) when I
> only need to see the query once in the log
>     /*
>      execulte execFn, just once for the jvm.
>      */
>     val execOnceSet = scala.collection.mutable.Set("")
>     def execOnce(key: String, execFn: => Unit) = {
>         if (!execOnceSet.contains(key)) {
>             execOnceSet += key
>             execFn
>         }
>     }
>
>   execOnce("findByEmail",  Log.info(emailQuery.getQueryWithParams()) )
>
>
> You can add the functionality if you find it useful
>
> cheers
> Oliver
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to