Spring Data JPA @ Процедура установки спящего режима @Type для @Param - PullRequest
0 голосов
/ 14 ноября 2018

Для краткости, эта аннотация 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?

...