我有一个DB表,其中有一个名为'expected'的列,定义为json。
并且db中的一行具有以下值:
basename
我正在尝试使用Hibernate选择此行,如下所示:
expected = {"min":5, "max":20, "league_id":7}
我得到以下异常:
Object[] league = (Object[])session.createSQLQuery(
"SELECT id, name, type, expected, content " +
"FROM bonus " +
"WHERE CAST(expected->>league_id as numeric)=7")
.uniqueResult();
为什么它试图将league_id翻译成一个专栏?
顺便说一下,如果我在我的pgAdmin工具中尝试这个查询,那就完美了!
任何帮助将不胜感激! 感谢。
答案 0 :(得分:1)
您应该league_id
引用'
:
SELECT id, name, type, expected, content
FROM bonus
WHERE (expected->>'league_id')::int = 7;
的 SqlFiddleDemo
强>
╔═════════╦══════╦═══════════════════════════════╦═════════════════════════════╦════════╗ ║ Operator║ Type ║ Description ║ Example ║ Result ║ ╠═════════╬══════╬═══════════════════════════════╬═════════════════════════════╬════════╣ ║ ->> ║ text ║ Get JSON object field as text ║ '{"a":1,"b":2}'::json->>'b' ║ 2 ║ ╚═════════╩══════╩═══════════════════════════════╩═════════════════════════════╩════════╝