Hi Shantanu,
I finally got it working as follows:
(defmulti parse-int type)
(defmethod parse-int java.lang.Integer [n] n)
(defmethod parse-int java.lang.String [s] (Integer/parseInt s))
(defn get-a-member [id]
(layout/render "member/profile2.html"
{:member (db/get-member-url (parse-int id))}
(session/put! :member-id (parse-int id))))
So parse-int ensures id is specified as an integer for postgres.
I have another question. I'd like to get the username from this result set and
put it in session. How would I add that to the above code. If I add :username
username to the session PUT statement, it doesn't recognize it.
(defn get-a-member [id]
(layout/render "member/profile2.html"
{:member (db/get-member-url (parse-int id))}
(session/put! :member-id (parse-int id) :username username)))
So I look up the record, and from that record I want to extract id and username
and put them in session as member-id and username.
Btw, would you recommend using an ORM or straight java.jdbc and if an ORM, any
particular one you'd recommend?
Best,
Pardeep.
On Feb 11, 2014, at 1:16 AM, Shantanu Kumar wrote:
> Can you post the SQL template (with ? symbols) you are trying to execute?
> Usually, with PostgreSQL you can specify ?::integer in place of ? to imply
> that the passed parameter is an integer.
>
> Shantanu
>
> On Tuesday, 11 February 2014 13:52:54 UTC+5:30, The Dude (Abides) wrote:
> Hi, I'm getting an error calling a record from an id passed via a url using
> Korma Sql. The error says:
>
> org.postgresql.util.PSQLException
>
> ERROR: operator does not exist: smallint = character varying Hint: No
> operator matches the given name and argument type(s). You might need to add
> explicit type casts. Position: 57
>
> I have a list of members, with a url /member/:id to call profile for that
> member in the view showing the member list. Here's my 3 moving parts:
>
> ROUTE
>
> (GET "/member/:id" [id] (get-the-member id))
>
> FUNCTION
>
> (defn get-the-member [id]
> (layout/render
> "member/profile.html"
> {:member (db/get-member-url id)}))
>
> MODEL
>
> (defn get-member-url [id]
> (first (select members
> (where {:id id})
> (limit 1))))
>
> Now if I hard code the id number in the model, it works, but its not
> accepting the id var as an integer. How would I give it an explicit typecast
> in this instance. Or would it perhaps be better to use java.jdbc or another
> ORM like Sql Lingov, HoneySQL, Clojureql or clojure-sql? Rest of crud working
> fine, but id var not being accepted by the model. The model itself works if
> an id number is hardcoded. Perhaps I'm missing some simple syntax point here?
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to a topic in the Google
> Groups "Clojure" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojure/F9S5W9xEhWs/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.