I have some custom types. They are all basically enums. Here is an example of what they look like:
CREATE TYPE card_suit AS ENUM
('spades',
'clubs',
'hearts',
'diamonds');
And I have some prepared statements in Java, which look something like this:
// Setup stuff up here.
sql = "INSERT INTO foo (suit) VALUES (?)";
st.setString(1, 'spades');
st.executeUpdate(sql);
And Java gives me some nasty exceptions like this:
org.postgresql.util.PSQLException: ERROR: column "suit" is of type card_suit but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
It’s nice of them to give me a hint, but I’m not sure exactly how to follow it.
Have you tried to cast column to enum?
Explained in Convert between Java enums and PostgreSQL enums article of ‘A web coding blog’ with samples: