我有一些自定义类型。它们基本上都是枚举。这是它们的外观示例:
CREATE TYPE card_suit AS ENUM
('spades',
'clubs',
'hearts',
'diamonds');
我在 Java 中有一些准备好的语句,看起来像这样:
// Setup stuff up here.
sql = "INSERT INTO foo (suit) VALUES (?)";
st.setString(1, 'spades');
st.executeUpdate(sql);
Java 给了我一些像这样的讨厌的异常:
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.
很高兴他们能给我提示,但我不确定具体如何遵循。
最佳答案
您是否尝试过将列转换为枚举?
// Setup stuff up here.
sql = "INSERT INTO foo (suit) VALUES (?::card_suit)";
st.setString(1, 'spades');
st.executeUpdate(sql);
在 Convert between Java enums and PostgreSQL enums 中解释带有示例的“网络编码博客”文章:
INSERT INTO pet (pet_id, pet_type, name)
VALUES (?, CAST(? AS animal_type), ?);
--or
INSERT INTO pet (pet_id, pet_type, name)
VALUES (?, ?::animal_type, ?);
关于java - 在 java 中使用准备好的语句插入到自定义 SQL 类型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10571821/