Для краткости, эта аннотация DB @Procedure будет работать:
public interface PersonRepository extends CrudRepository<Person, Long> {
@Procedure(procedureName = "MOVE_TO_HISTORY")
boolean movePersonToHistory(@Param("person_id_in") int personId);
}
При использовании типа JsonNode Джексона (моя БД ожидает тип JSON в качестве типа входной переменной) , не будет:
public interface PersonRepository extends CrudRepository<Person, Long> {
@Procedure(procedureName = "MOVE_TO_HISTORY")
boolean movePersonToHistory(@Param("in_params_json") JsonNode personPropsJsonNode);
}
Я работаю над тем, чтобы JsonNode не определялся драйвером jdbc в модели сущностей с помощью аннотации @Type, предоставляющей (расширенный от AbstractSingleColumnStandardBasicType) Определение JsonNodeBinaryType:
@Type( type = "json-node")
private JsonNode params;
Но аннотация @Param не поддерживает ввод ничего, кроме имени параметра ...
Сейчас я использую StoredProcedureQuery, чтобы запрос к БД работал:
StoredProcedureQuery storedProcedure = entmanager.createStoredProcedureQuery("***")
.registerStoredProcedureParameter("in_params_json",
JsonNodeBinaryType.class , ParameterMode.IN);
storedProcedure.setParameter("in_params_json", jsonNodeParam); // - jsonNodeParam is of type JsonNode
Итак, вопрос в том, можно ли заставить аннотацию @Procedure работать с параметром типа JsonNode?