Jdbi: рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ jsonb рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдмрдЪрдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рд╕рд┐рддре░ 2015  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jdbi/jdbi

рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдФрд░ рдЬреЗрд╕рдирдмреА рдХреЗ рд╕рд╛рде рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

select id, data from some_table where data ? :key

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, jdbi рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рд╕реЗ рдХреИрд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ jdbc рдореЗрдВ рдПрдХ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реИ ??? рдЗрд╕ рддрд░рд╣:

select id, data from some_table where data ?? :key

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмреИрдХрд╕реНрд▓реИрд╢ \? рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд╡рд╣ рдореЗрд░реА рдкрд╣рд▓реА рд╡реГрддреНрддрд┐ рдереАред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

Exception in thread "main" org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException: org.postgresql.util.PSQLException: No value specified for parameter 2. [statement:"select id, createdDate, data from something where data \? ?", located:"select id, createdDate, data from something where data \? ?", rewritten:"select id, createdDate, data from something where data ? ?", arguments:{ positional:{0:'pattern'}, named:{}, finder:[]}]
    at org.skife.jdbi.v2.SQLStatement.internalExecute(SQLStatement.java:1334)
    at org.skife.jdbi.v2.Query.fold(Query.java:173)
    at org.skife.jdbi.v2.Query.list(Query.java:82)
    at org.skife.jdbi.v2.Query.list(Query.java:75)
    at com.ngc.vault.eventer.Query.hasKey(Query.java:45)
    at com.ngc.vault.eventer.Main.main(Main.java:34)
Caused by: org.postgresql.util.PSQLException: No value specified for parameter 2.
    at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:228)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:163)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:615)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:465)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:458)
    at org.skife.jdbi.v2.SQLStatement.internalExecute(SQLStatement.java:1328)
    ... 5 more

рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ jdbc рдореЗрдВ рдПрдХ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реИ ??? рдЗрд╕ рддрд░рд╣:

select id, data from some_table where data ?? :key

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреНрд╡реЗрд░реА
SELECT json_data FROM employee where json_data -> 'employee' @> '{"name":"Aman"}'

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдХреНрд╡реЗрд░реА рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм jdbctemplate рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдХреЛрдб

String sql="SELECT json_data FROM employee where json_data -> 'employee' @> '{\"name\":\"?\"}'";

List<Map<String, Object>> emp = jdbcTemplate.queryForList(sql,param);

рдХреЛрдб рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ: - рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ: 1, рдХреЙрд▓рдо рдХреА рд╕рдВрдЦреНрдпрд╛: 0.; рдиреЗрд╕реНрдЯреЗрдб рдЕрдкрд╡рд╛рдж org.postgresql.util.PSQLException рд╣реИред

рдпрд╣ '?' рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░

рд╡рд╣ JDBC рдпреБрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред ? рдорд╛рд░реНрдХрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдХреНрд╖рд░ рдХреЗ рдЕрдВрджрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреЛ рдЙрд╕ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЙрдиреНрд╕рдЯреЗрдиреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЙрдиреНрд╕рдЯреЗрдиреЗрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреНрд╡реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА:

SELECT json_data
FROM employee
WHERE json_data -> 'employee' @> ('{"name": "' || ? || '"}')

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдЬреЗрдбреАрдмреАрдЖрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЗрдбреАрдмреАрд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд╣реАрдВред :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕