powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
18 сообщений из 18, страница 1 из 1
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130958
IgorD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Не судите строго, только осваиваю эти фреймворки. Прошу помощи, не могу решить проблему.
Если хранимая процедура без параметров - работает без ошибки. Как только добавляю параметр - ошибка.


База Oracle 11.2.0.4.0
Java клинет 1.8
Использую библиотеку ojdbc6-11.2.0.3.jar


Хранимая процедура на стороне Оракл

Код: plsql
1.
2.
3.
4.
procedure get_Current_Exchange_Rate0(p_div_code_list in string) is
begin
  null;
  end;



К Базе подключаюсь так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Bean(name = "ora")
    public DataSource getDataSourceOracleDev() throws Exception {
        Map<String, String> secrets = dockerSecretUtils.load();
        HikariConfig config = new HikariConfig();
        config.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        config.setJdbcUrl(url);
        config.setUsername(secrets.get(SECRETS_DB_BANK_USER).trim());
        config.setPassword(secrets.get(SECRETS_DB_BANK_PASSWORD).trim());
        config.setMaximumPoolSize(maxPool);
        HikariDataSource dataSource = new HikariDataSource(config);
        return dataSource;
    }



Entity

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Entity
@NamedStoredProcedureQuery(
        name="getCurrentExchangeRate0",
        procedureName="TELEGRAMBOT.get_Current_Exchange_Rate0",
        parameters={
                @StoredProcedureParameter(name="p_div_code_list", type=String.class, mode= ParameterMode.IN)
        }
)
public class GetCurrentExchangeRateEntity {
    @Id
    @Column(name = "id")
    Integer id;
}



Repository

Код: java
1.
2.
3.
4.
5.
6.
@Repository
public interface GetCurrentExchangeRateRepository extends JpaRepository<GetCurrentExchangeRateEntity, Integer> {
    @Procedure(name = "getCurrentExchangeRate0")
    void getCurrentExchangeRate(@Param("p_div_code_list") String divCodeList);

}



Ошибку, которую получаю

Код: powershell
1.
2.
2022-02-01 10:12:50,345 WARN  [http-nio-8888-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: SQL Error: 17147, SQLState: 99999
2022-02-01 10:12:50,346 ERROR [http-nio-8888-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Попытка присвоения имени параметра, которое не встречается в данном SQL: p_div_code_list
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130982
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD,
Может все таки по классике? ОРМ и без хрпнимок?
Что за сущность на основе хранимки, да еще с параметром?
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130985
IgorD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
В хранимке будет достаточно увесистый селект. Конечно можно и по другому, но хотелось бы разобраться с этим. В сети много примеров с таким подходом, предполагаю, что они рабочие, но для других баз.
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130990
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давно оракл не трогал, но чет тип string в pl/sql смущает. Включи полный sql лог, чтобы посмотреть какой текст запроса уходит в оракл
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130992
IgorD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan,
В Application.yml есть следующие установки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
spring:
  config:
    activate:
      on-profile: dev
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: true



Но в консоли только такая информация

Код: powershell
1.
2.
3.
4.
5.
6.
2022-02-01 12:30:55,351 INFO  [http-nio-8888-exec-2] org.apache.juli.logging.DirectJDKLog: Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-02-01 12:30:55,351 INFO  [http-nio-8888-exec-2] org.springframework.web.servlet.FrameworkServlet: Initializing Servlet 'dispatcherServlet'
2022-02-01 12:30:55,353 INFO  [http-nio-8888-exec-2] org.springframework.web.servlet.FrameworkServlet: Completed initialization in 1 ms
Hibernate: {call TELEGRAMBOT.get_Current_Exchange_Rate0(?)}
2022-02-01 12:30:55,503 WARN  [http-nio-8888-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: SQL Error: 17147, SQLState: 99999
2022-02-01 12:30:55,504 ERROR [http-nio-8888-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Попытка присвоения имени параметра, которое не встречается в данном SQL: p_div_code_list
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130995
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регистрозависимость? В базе-то имена в верхнем регистре, если явно не указано в кавычках.

Ну и как-то вообще странно выглядит процедура get_XXX, которая ничего ниоткуда не возвращает.
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40130997
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
включите лог хибернейта, что бы он запросы отсылаемые на сервер показывал
тогда будет понятно, что именно хочет выполнить хибер, есть ли в данном запросе данные параметры или нет

Query (по названию анотации) из процедуры без параметров - выглядит как-то странно
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131000
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. ну и да, string в Oracle? вообще-то всю жизнь было varchar2
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131001
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Для вызова хранимок ORM выглядит как минимум странно.

Пожалуй редкое исключение - Oracle pipeline function (генератор табличных строк), но в нашем случае - молчаливая процедура которая ничего не возвращает.

По идее в сигнатуре процедуры пропущен тип возвращаемого параметра. Ошибка?

Обществу нужны разъяснения.
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131002
IgorD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
Это процедура "заглушка", что бы разобраться с методом вызова хранимых процедур. В дальнейшем будет курсор на выход.
Пробовал параметры с разными регистрами - ошибка та же.

Меня смущает вызов процедуры
Код: java
1.
Hibernate: {call TELEGRAMBOT.get_Current_Exchange_Rate0(?)}



если бы был вариант
Код: java
1.
Hibernate: {call TELEGRAMBOT.get_Current_Exchange_Rate0(p_div_code_list => :p_div_code_list)}


то в таком случае обращение к параметру по имени было бы уместно
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дружище, давай сразу процедуру с курсором.

А то получается что ты захотел "странного".
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131006
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD
PetroNotC Sharp,
В хранимке будет достаточно увесистый селект. Конечно можно и по другому, но хотелось бы разобраться с этим. В сети много примеров с таким подходом, предполагаю, что они рабочие, но для других баз.

1. Предполагаю, что примеры для MS SQL Server
2. Для Oracle примеры тоже есть, но RefCursor возвращать нужно явно
первый пример по поиску из googlе для Oracle:
https://www.logicbig.com/tutorials/java-ee-tutorial/jpa/named-stored-procedure.html
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131007
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD

Hibernate: {call TELEGRAMBOT.get_Current_Exchange_Rate0(?)}

callByIndex ?
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131022
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD
PetroNotC Sharp,
В хранимке будет достаточно увесистый селект. Конечно можно и по другому, но хотелось бы разобраться с этим. В сети много примеров с таким подходом, предполагаю, что они рабочие, но для других баз.

В каждом слове противоречия.
Я насчитал штук 10.
Почему не учится по хорошим юскейсам?
Зачем на винигрете:
- увесистый селект
- с параметром
- с курсором)))))
- оракл
- хибер, jpa
.....
А вьюха не заменит тебе курсор?)))))
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131034
IgorD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
Полностью согласен с написанным. Но на этом примере хочу научится использовать хранимки. Имею привычку писать бизнеслогику на хранимках сервера :).
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это похвально. Но давай боевой код. А-то какие-то игрушки детские разбираем.
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131076
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD
PetroNotC Sharp,
Полностью согласен с написанным. Но на этом примере хочу научится использовать хранимки. Имею привычку писать бизнеслогику на хранимках сервера :).
ну дык я сам начинал с этого. Дельфя + оракле хранимки.
Только зачем из ХП делать сущности?
Тут в java. никто особо не рвался изучать хранимки))))
...
Рейтинг: 0 / 0
Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
    #40131155
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorD
PetroNotC Sharp,
Полностью согласен с написанным. Но на этом примере хочу научится использовать хранимки. Имею привычку писать бизнеслогику на хранимках сервера :).


Когда зачем Hibernate и Spring-Data-Jpa?
Это для работы с логикой в ХП лишнее.
ИМХО можно взять Spring-Data-Jdbc и не страдать фигней.

<:o)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot + Hibernate + Oracle Stored Procedure. Не распознает параметры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]