powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
25 сообщений из 94, страница 2 из 4
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233995
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ivanra,
Именованый запрос работает с такой хранимкой? Параметры и мульти?
Думаю, что нет (из-за нескольких резалтсетов). Сам тоже намучился с такими процедурами (досталось в наследство), и считаю их злом. Работать с этим можно только на уровне, приближенном к API базы (jdbc, ADO), и при большом объеме кода это действительно достает.
Я просто показал пример, как маппинга без entity, а дальше можно попытаться вытянуть полезный код из исходников хибера (а может, даже и применить готовое API)
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233999
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
Еще раз. Как будешь заполнять reports?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234000
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1) нет вообще доступа к таблицам ... нет и
что тогда можно говорить о id????
ты понимаешь что делает этот код
Код: java
1.
2.
3.
 while (rs1.next()) {
                result.setAgentName(rs1.getString(1));
            }


есть описание того, что возвращает хранимка?
есть текст хранимки?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234006
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
Тоже думаю, что из за мульти все идет лесом.
Т.е. аффтар пусть смирится или перельет в коллекции руками. Но код не станет проще и короче.
Удачи ему!
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234028
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое смешное, что такие процедуры даже нельзя повторно использовать на сервере (я говорю про MSSQL, но, вероятно и для других серверо верно). Максимум - можно получить только первый резалтсет.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234061
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraСамое смешное, что такие процедуры даже нельзя повторно использовать на сервере (я говорю про MSSQL, но, вероятно и для других серверо верно). Максимум - можно получить только первый резалтсет.
а можно поподробнее про эти страшные процедуры-камикадзе?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234081
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем тут jpa?

Если хочется меньше бойлерплейт кода, то можно заюзать spring-jdbc. Вот пример с продакшена с 4-мя резалтсетами

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.SqlReturnResultSet;
import org.springframework.jdbc.object.StoredProcedure;
import org.springframework.stereotype.Repository;


@Repository
public class ClientRepositoryImpl {

	@Autowired
    @Qualifier("dataSource")
    protected JdbcOperations jdbcTemplate;
	
    private GetClientHeaderProcedure getClientHeaderProcedure;

    @Autowired
    public void init(DataSource dataSource) {
        this.getClientHeaderProcedure = new GetClientHeaderProcedure(dataSource);
    }

    @SuppressWarnings("unchecked")
    @Override
    public ClientHeader getClientHeader(String userId, Long clientId) {
        Map<String, Object> results = getClientHeaderProcedure.execute(userId, clientId.intValue());
        List<Client> clientList = (List<Client>) results.get(GetClientHeaderProcedure.CLIENT_RS);
        ClientHeader clientHeader = new ClientHeader();

        clientHeader.setClient(clientList.get(0));

        List<Client> relatingClientList = (List<Client>) results
                .get(GetClientHeaderProcedure.RELATING_CLIENT_RS);
        clientHeader.setRelatingClients(relatingClientList);

        List<BasicAccount> accounts = (List<BasicAccount>) results
                .get(GetClientHeaderProcedure.ACCOUNTS_RS);
        clientHeader.setAccounts(accounts);
        clientHeader.setAccountGroups((List<AccountGroup>) results
                .get(GetClientHeaderProcedure.ACCOUNT_GROUPS_RS));

        return clientHeader;
    }

	public class ClientRowMapper implements RowMapper<Client> {

    @Override
    public Client mapRow(ResultSet rs, int rowNum) throws SQLException {
    	Client client = new Client();
        client.setId(rs.getLong("ClientProfileID"));
        client.setFirstName(rs.getString("FirstName"));
        client.setLastName(rs.getString("LastName"));
        client.setTaxId(rs.getString("TaxID"));
        return client;
    }

	}
    private static class GetClientHeaderProcedure extends StoredProcedure {

        private static final String SQL = "GetClientHeaderProcedure";
        private static final String USER_ID = "UserID";
        private static final String CLIENT_PROFILE_ID = "ClientProfileID";

        public static final String CLIENT_RS = "Client";
        public static final String ACCOUNTS_RS = "Accounts";
        public static final String RELATING_CLIENT_RS = "RelatingClient";
        public static final String ACCOUNT_GROUPS_RS = "AccountGroups";

        public GetClientHeaderByClientProfileIDProcedure(DataSource dataSource) {
            super(dataSource, SQL);
            setDataSource(dataSource);

            SqlParameter param1 = new SqlParameter(USER_ID, Types.VARCHAR);
            SqlParameter param2 = new SqlParameter(CLIENT_PROFILE_ID, Types.INTEGER);

            setParameters(new SqlParameter[] { param1, param2 });

            declareParameter(new SqlReturnResultSet(CLIENT_RS, new ClientRowMapper()));
            declareParameter(new SqlReturnResultSet(ACCOUNTS_RS, new BasicAccountRowMapper()));
            declareParameter(new SqlReturnResultSet(RELATING_CLIENT_RS, new ClientRowMapper()));
            declareParameter(new SqlReturnResultSet(ACCOUNT_GROUPS_RS, new AccountGroupRowMapper()));

            compile();
        }

        public Map<String, Object> execute(String userId, int clientProfileId) {
            Map<String, Object> inputs = new LinkedHashMap<>();
            inputs.put(USER_ID, userId);
            inputs.put(CLIENT_PROFILE_ID, clientProfileId);
            return execute(inputs);
        }
    }

}
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234099
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKivanraСамое смешное, что такие процедуры даже нельзя повторно использовать на сервере (я говорю про MSSQL, но, вероятно и для других серверо верно). Максимум - можно получить только первый резалтсет.
а можно поподробнее про эти страшные процедуры-камикадзе?
в Java видел?
procedure{
result:= 1
result:= 2
result:= 3
}
это то же самое в хранимках возврат сразу несколько select* from
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234101
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKа можно поподробнее про эти страшные процедуры-камикадзе?
Технологии, пришедшие из прошлого тысячелетия, когда сетевые обращения считались безумно дорогими, а время разработчика - наоборот.
Процедуры эти выглядят так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create procedure myProc 
as
begin
  blablabla ...
  select ...
  select ...
  ...
end


за 1 запрос возвращается несколько наборов данных, дальше всё это надо разбирать на клиенте вручную, примерный код был приведен выше. Как правило, требует много писанины.
На самом же SQL сервере использовать данную процедуру невозможно, максимум доступны данные только из первого набора.
В общем, что-то редкое, для решения узкоспециализированных задач. Большая боль, если на этом построено API базы
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234107
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,

не увидел ответа на
авторпроцедуры даже нельзя повторно использовать на сервере
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234114
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKivanra,
не увидел ответа на
авторпроцедуры даже нельзя повторно использовать на сервере
он имел ввиду соединять результаты JOIN если ФИО в одной, а код клиента в другой табле.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234118
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TaPaKivanra,
не увидел ответа на
пропущено...

он имел ввиду соединять результаты JOIN если ФИО в одной, а код клиента в другой табле.
достаточно сложная ассоциация с "нельзя повторно использовать" и вашим комментарием :)
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234119
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё очень удобно когда ХП можно засунуть в
Код: java
1.
SELECT ID, XP_GET_FIO(ID) FROM ....


Но для этого они не должны быть мульти и т.д.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234121
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKдостаточно сложная ассоциация с "нельзя повторно использовать" и вашим комментарием :)
сложная)), но я его понял.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234123
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ещё очень удобно когда ХП можно засунуть в
Код: java
1.
SELECT ID, XP_GET_FIO(ID) FROM ....


Но для этого они не должны быть мульти и т.д.
это в каком языке такое можно?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234124
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
в любом от 92 года
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234129
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TaPaK,
в любом от 92 года
если мы про tsql то пожалуйста пример вызова процедуры c передачей параметра, так как указано у вас
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234133
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
мы про Оракл.
А ты как раз разраб той БД от MS с которой проблемы?
Тогда дай ошибку на данный вызов хранимки.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234139
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TaPaK,
мы про Оракл.
А ты как раз разраб той БД от MS с которой проблемы?
Тогда дай ошибку на данный вызов хранимки.

:)
авторis not a recognized built-in function name.

авторв любом от 92 года = Ораклл?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234145
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
тут лучше обратиться в форум соответствующего сервера.
Например, в mssql один из способов получения в сохраненной процедуре возвращаемого набора данных другой процедуры выглядит примерно так:
Код: sql
1.
insert into #tempTable(...) exec myProc @pearam1,@param2,...

, и потом работаем с #tempTable.
А дальше вопрос - что мы получим в #tempTable, если myProc возвращает несколько наборов данных? А что будет, если состав полей в этих наборах разный?
В общем случае, на sql сервере доступен только первый набор данных
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234148
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторis not a recognized built-in function name.
неужели dbo. забыл?
Ты поэтому никого тут не понимаешь, потому что к словам цепляешься).
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234151
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraВ общем случае, на sql сервере доступен только первый набор данных
Серверные прогеры их пишут...пишут. А на клиентах (Delphi\...) их ругают, ругают))
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234152
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraTaPaK,
тут лучше обратиться в форум соответствующего сервера.
Например, в mssql один из способов получения в сохраненной процедуре возвращаемого набора данных другой процедуры выглядит примерно так:
Код: sql
1.
insert into #tempTable(...) exec myProc @pearam1,@param2,...

, и потом работаем с #tempTable.
А дальше вопрос - что мы получим в #tempTable, если myProc возвращает несколько наборов данных? А что будет, если состав полей в этих наборах разный?
В общем случае, на sql сервере доступен только первый набор данных
то нельзя повторно использовать, то процедуры можно, то нельзя :) весело тут у вас :)
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234153
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123авторis not a recognized built-in function name.
неужели dbo. забыл?
Ты поэтому никого тут не понимаешь, потому что к словам цепляешься).
мы реально не понимаем разницу между функцией и хп?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234156
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKто нельзя повторно использовать, то процедуры можно, то нельзя :) весело тут у вас :)
Вот у меня есть одна процедура, у которой первый резалтсет - шапка с ФИО руководителя и прочей ерундой. А полезные данные - в последующих резалтсетах. Как я могу использовать эти данные на сервере? Без копипаста кода процедуры, ведь речь о повторном использовании.
У тебя есть решение?
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 2 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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