powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
94 сообщений из 94, показаны все 4 страниц
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233625
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

Есть вопрос :

API базы данных представлено в виде Хранимых процедур , которые возвращают множественные ResultSet
без уникальных ключей

Как в спринге замапить все это на объект через jpa 2.1


Нашел только под топлинк
https://wiki.eclipse.org/EclipseLink/Release/2.5/JPA21#A_more_complex_example_with_multiple_result_sets_using_sql_result_set_mappings

но эта магия работает через бубен с аспектами инструментированием кода и прочей ерундой ...


что нужно :

каким то образом разложить эти ResultSet по обектам - к примеру одного объекта ResultEntity у которого нет id

а поля этого объекта - это Embedded поля ..вроде как то так?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233656
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1которые возвращают множественные ResultSet
без уникальных ключей
1. Пример приведи. С параметрами что ли? С разными колонками на выходе?
Atum1 без уникальных ключей
При желании через вьюху можно их сделать и работай как обычно.
Шаблон Фасад знаком?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233711
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Вью мне никто делать не даст.... Пример как по ссылке... Завтра утром скину свой вариант кода... Вопрос очень актуальный.... Знаю как делается обычно через jdbc перебором всех резалтсетов.... И вытаскиванием параметров по их именам.... Но этот шаблонный код... И таких примеров процедур 100500 хочется настроить маппинг...


И да вопрос @entity без @id быть не может!? Как быть если резвлтсет возвращает структуру без уникального ключа.... Средствами jpa ее можно смапить на класс?

Какие аннотации и где указать?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233719
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
судя по
Код: sql
1.
2.
SELECT E.*, S.* FROM EMPLOYEE E, SALARY S WHERE E.EMP_ID = S.EMP_ID; 
       SELECT A.* FROM ADDRESS A; 


возвращает всё , в том числе и id
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233725
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же надо, какой геморой сделали с несколькими результатами в одной хранимке. Поубивав бы.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233727
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Id не уникален
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233732
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
Id не уникален
кто тебе это сказал?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233738
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Это же надо, какой геморой сделали с несколькими результатами в одной хранимке. Поубивав бы.
ты просто не умеешь их готовить!
в этом нет ничего страшного. одно обращение к базе и куча данных.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233765
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяPetro123Это же надо, какой геморой сделали с несколькими результатами в одной хранимке. Поубивав бы.
ты просто не умеешь их готовить!
в этом нет ничего страшного. одно обращение к базе и куча данных.
аргумент из детского сада? Когда куча в программировании это синоним хорошо? ))))LOL
PS
JOIN к куче как делать?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233768
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автораргумент из детского сада? Когда куча в программировании это синоним хорошо? ))))LOL
PS
JOIN к куче как делать?
Petro123 не позорься, твоё JOIN к куче как делать? показывает, что ты в базах близок к нулю.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233776
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
мне как то плевать к тому что ты говоришь.
Либо ответ, либо шуруй в ПТ.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233785
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что можно ответить ???
какая связь между этим "JOIN к куче как делать" и "множественные ResultSet"

в этом нет ничего страшного. одно обращение к базе и куча данных.
одно обращение к базе и потом просто извлекаешь по очереди результсеты из ответа.
это бывает очень удобно, потому как параметры для следующего rs могут быть взяты из предыдущего.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233804
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякакая связь между этим "JOIN к куче как делать" и "множественные ResultSet"

тебя не просят анализ.
Тебя просят дать ответ:
- в одной хранимке идут 5 кортежей с данными. Как сделать пересечение LEFT JOIN между первым и вторым кортежем\набором данных?
Для 5-ти разных вьюх это сделать элементарно.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233839
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадякакая связь между этим "JOIN к куче как делать" и "множественные ResultSet"
пропущено...

тебя не просят анализ.
Тебя просят дать ответ:
- в одной хранимке идут 5 кортежей с данными. Как сделать пересечение LEFT JOIN между первым и вторым кортежем\набором данных?
Для 5-ти разных вьюх это сделать элементарно.
термин LEFT JOIN принадлежит СУБД. а то что возвращает хранимка - результаты работы СУБ
и делать LEFT JOIN между результатами это несколько того...., попахивает

вьюха это одно, хранимка другое.
в mysql в хранимке можно вызвать хранимку, но результат такого вызова только отдельные значения, а не таблица, как во вьюхе.
разница между вью и хранимкой внутри и довольно существенна.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233852
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
«множественный результсет» это термин jdbc , обозначает результат, возвращаемый в кодj java.
термин «результсет» не принадлежит СУБД.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233854
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи делать LEFT JOIN между результатами это несколько того...., попахиваетмне тебя жаль.
Удачи!
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233916
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяи делать LEFT JOIN между результатами это несколько того...., попахиваетмне тебя жаль.
Удачи!
а мне тебя , базы это не твоё, jdbc для тебя тёмный лес, жаль....
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
я же не про базы и лес. Я про JOIN))
JOIN для тебя ненужная прокладка. Есть for, например. Я записал.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233944
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
я же не про базы и лес. Я про JOIN))
JOIN для тебя ненужная прокладка. Есть for, например. Я записал.
я такого не говорил!
JOIN это оператор для "соединения" таблиц.
он не может быть прокладкой.
видимо мы запутали друг друга терминами ....
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233954
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примере может и есть id - у меня в ResultSet ах их просто нет ... просто наборы данных ...


по старинке все нормально работает ...но вот с jpa 2.1 и мапингом в объекты засада ....


как было :


Код: 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.
 ReportImpl result = new ReportImpl();
 try {

            session = sessionFactory.openSession();
            java.sql.Connection con = session.connection();

            CallableStatement statement = null;

            statement = con.prepareCall("{CALL PR$ONLINE_REPORT(? ,?, ? , ?)}");


            statement.setLong(1, tId);
            statement.setLong(2, lgn);
            statement.setTimestamp(3, new Timestamp(from.getTime()));
            statement.setTimestamp(4, new Timestamp(till.getTime()));

            statement.execute();


           //

            ResultSet rs1 = statement.getResultSet();
            while (rs1.next()) {
                result.setAgentName(rs1.getString(1));
            }
            rs1.close();



            if (statement.getMoreResults()) {
                ArrayList<Tuple3<String, String, String>> reports = new ArrayList<Tuple3<String, String, String>>();

                ResultSet rs2 = statement.getResultSet();
                while (rs2.next()) {
                    reports.add(new Tuple3<String, String, String>(rs2.getString(1), rs2.getString(2), rs2.getString(3)));
                }
                result.setSales(reports);
                rs2.close();
            }


         if (statement.getMoreResults()) {
                ResultSet rs2 = statement.getResultSet();
                while (rs2.next()) {
                    result.setSalesSum(rs2.getString(1));
                }
                rs2.close();
            }

          if (statement.getMoreResults()) {
                ArrayList<Tuple3<String, String, String>> reports = new ArrayList<Tuple3<String, String, String>>();
                ResultSet rs2 = statement.getResultSet();
                while (rs2.next()) {
                    reports.add(new Tuple3<String, String, String>(rs2.getString(1), rs2.getString(2), rs2.getString(3)));
                }
                result.setPayments(reports);
                rs2.close();
            }

            if (statement.getMoreResults()) {
                ResultSet rs2 = statement.getResultSet();
                while (rs2.next()) {
                    result.setPaymentsSum(rs2.getString(1));
                }

                rs2.close();
            }

            if (statement.getMoreResults()) {
                ResultSet rs2 = statement.getResultSet();
                while (rs2.next()) {
                    result.setTotalSum(rs2.getString(1));
                }

                rs2.close();
            }


            statement.close();




что хочу - как в примере - через автомапинг - ибо таких хранимок очень много .... и писать типовой код - зло.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233962
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ примере может и есть id - у меня в ResultSet ах их просто нет ... просто наборы данных .
ResultSet - это просто набор данных.
как ты определяешь, что не id?
приведи пример реальной хранимки для которой нет id.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233978
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чистом jpa, скорее всего, не получится.
Но маппинг без ключей существует, например, в хибере:
Код: java
1.
2.
3.
Query query = session.getNamedQuery("credit.processes")
		.setResultTransformer(Transformers.aliasToBean(CreditProcess.class));
List<CreditProcess> processes = query.list();


где CreditProcess - обычный класс (не требует никаких аннотаций и описаний в xml).

Можно, наверно, подобным образом мапить и в EclipseLink
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233981
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
Вроде не раз писали, что ОРМ в отчетах не эффективен.
Напиши как ты видишь заполнение объекта reports через ORM.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233986
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
Именованый запрос работает с такой хранимкой? Параметры и мульти?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39233991
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторВ примере может и есть id - у меня в ResultSet ах их просто нет ... просто наборы данных .
ResultSet - это просто набор данных.
как ты определяешь, что не id?
приведи пример реальной хранимки для которой нет id.

1) нет вообще доступа к таблицам ... нет и

Код: java
1.
2.
@Entity(name="DepartmentEntity")
@Table (name="department")



Хотя в идеале хотелось бы получить некую метаинформацию из таблиц/хранимок и написать Свой ORM :)

а как хочется
Код: 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.
@Entity //  нужно убрать , т.к. нет никакого entity  но без него не регистритуется хранимка !!!!!
@NamedStoredProcedureQuery(name = "GET_MPARAMETERS", procedureName = "PR_GET_MPARAMETERS",
        parameters = {
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "a_id", type = Integer.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "a_dr", type = Integer.class) },
        resultSetMappings={"MPropertiesResultSetMapping", "CatResultSetMapping", "SignResultSetMapping"}
)
public class ResultEntity implements Serializable{

    private static final long serialVersionUID = 1L;


    @Embedded// думаю это ненужно 
    private MProperties mProperties;

    @Embedded //// думаю это ненужно 
    private  Cat сat;

    @EmbeddedId // тут нужен  @Embedded
   private  Sign sign;

    public MProperties getMProperties() {
        return mProperties;
    }

    public void setMProperties(MProperties mProperties) {
        this.mProperties = mProperties;
    }

    public Cat getCat() {
        return cat;
    }

    public void setCat(Cat cat) {
        this.cat = cat;
    }

    public Vsign getSign() {
        return sign;
    }

    public void setSign(Sign sign) {
        this.sign = sign;
    }
}




Код: 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.
@Embeddable // думаю это ненужно 
@SqlResultSetMappings({
        @SqlResultSetMapping(
                name = "MPropertiesResultSetMapping",
                entities = {
                        @EntityResult(entityClass = MProperties.class)
                }
        )

})
public class MProperties implements Serializable {

    private static final long serialVersionUID = 1L;


    private Long a_id_ans;

    private Integer a_column;

    String a_draw;



    public Integer getA_column() {
        return a_column;
    }

    public Long getA_id_ans() {
        return a_id_ans;
    }

    public String getA_draw() {
        return a_draw;
    }
}

 
...
Рейтинг: 0 / 0
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
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234158
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKмы реально не понимаем разницу между функцией и хп?
ты как в анекдоте: "Солдат! Почему сапоги не чищены?".
Стандарт SQL92 года каждый сервер понимает по своему. Их право.
И твоё право тоже.
Разговор про то что - нефиг делать API для клиента из "multiple results".
Так что не флуди.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234162
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraTaPaKто нельзя повторно использовать, то процедуры можно, то нельзя :) весело тут у вас :)
Вот у меня есть одна процедура, у которой первый резалтсет - шапка с ФИО руководителя и прочей ерундой. А полезные данные - в последующих резалтсетах. Как я могу использовать эти данные на сервере? Без копипаста кода процедуры, ведь речь о повторном использовании.
У тебя есть решение?
в понятии повторное использование у вас вложено "использовать процедуру не для целей для которых она писалась"?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234167
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK"использовать процедуру не для целей для которых она писалась"
тут крыть нечем).
"Это не бага - это фича" (с)
Пятница)
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234170
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKв понятии повторное использование у вас вложено "использовать процедуру не для целей для которых она писалась"?
Именно. Только для полноты надо еще добавить "другими разработчиками"
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234348
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение что

hibernate multiple result sets

это несовместимые вещи ... а уж тем более через HibernateJpaVendorAdapter

Видимо hibernate не поддерживает multiple resultsets

или он вернет неведомый объект вместо resultset ?

// возможно нужно использовать pool BoneCPDataSource vs DriverManagerDataSource
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    @Bean
    public DataSource dataSource() {
        /// возможно нужно использовать pool 
        //BoneCPDataSource dataSource = new BoneCPDataSource();
        //dataSource.setDriverClass(environment.getRequiredProperty("spring.datasource.driver-class-name"));
        //dataSource.setJdbcUrl(environment.getRequiredProperty("spring.datasource.url"));

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("spring.datasource.driver-class-name"));
        dataSource.setUrl(environment.getRequiredProperty("spring.datasource.receiptadm.url"));
        dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username"));
        dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password"));
       return dataSource;
    }



LocalContainerEntityManagerFactoryBean - может заменить его на что то другое?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@Autowired
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(@Qualifier("dataSource") DataSource dataSource) {

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setShowSql(true);

        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(receiptadmDataSource);
        em.setPackagesToScan(new String[]{"*****"});
        em.setPersistenceUnitName("puPersistanceUnit");

        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());

        return em;

    }




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    @Autowired
    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager( @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory);
        return txManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

    Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
        properties.setProperty("hibernate.hbm2ddl.auto", "validate");//update validate
        properties.setProperty("hibernate.show_sql", "false");
        properties.setProperty("hibernate.format_sql", "true");
        properties.setProperty("hibernate.default_batch_fetch_size", "16");
        return properties;
    }
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234364
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну то что они несовместимы, это очевидно, если у вас API через хранимки. Зачем вам тут JPA натягивать абсолютно непонятно. Как вы будете осуществлять апдейт инсерт и тд?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234385
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
вы делаете отчётный модуль. Если вы не любите SQL, то отдайте задачу другому.
Почему - выше уже 100 раз написали.
У отчётников другие законы. Большинству отчётников никакой ООП даром не дался.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234395
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, так это еще и для отчета...
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234438
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Это не отчетный модуль - взял первый пример просто - в виде отчета ... весь АПИ к БД это хранимки .
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234456
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Petro123,

Это не отчетный модуль - взял первый пример просто - в виде отчета ... весь АПИ к БД это хранимки .

ответь на вопрос:
как ты определяешь, что не id?

и
приведи пример реальной хранимки для которой нет id.
и
как ты с этой хранимкой работаешь

есть соображения почему у тебя не работает
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234458
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как ты определяешь, что нет id?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234471
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Это не отчетный модуль - взял первый пример просто - в виде отчета
что это меняет?
Ты не читал тут у нас, про то что ОРМ - это CRUD?
"As Is To Be" - как есть и как будет.
При любой автоматизации.
У тебя ни первого, ни второго. Автоматизировать нечего. Только хотелка программиста.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234817
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1, возьмите MyBatis.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39234828
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferc,
Он работает с мульти?
Тут код выше такой что маппинг невозможен. Ручная работа с API.
Правда ТС говорит что тот код он от балды с веб привел.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236235
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ferc,
Он работает с мульти?
Тут код выше такой что маппинг невозможен. Ручная работа с API.
Правда ТС говорит что тот код он от балды с веб привел.

работает.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236250
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 - странный, не хочет отвечать на конкретные вопросы, но хочет помощи....
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236255
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Ты его просто не знаешь. Он работает с ОРМ и ему нравится ОРМ. Ты его нагибал орм выкинуть.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236262
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAtum1 - странный, не хочет отвечать на конкретные вопросы, но хочет помощи....

я выпал немного из обсуждения... пробовал другие провайдеры ...

задача сводится к следующему :

мапить множественные резалтсеты через api jpa 2.1 на pojo ( в общем случае не entity , без id )без ручного разбора.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236264
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача звучит примерно как - Обьясните как доехать до Китая на велосипеде за 6 часов.

JPA как абстракция работает с одним резалтсетом(хотя в принципе можно и научить работать с двумя и более), но вот наличие id у сущности прям неотъемлемая черта(вспомним как делаются джойны, кэш первого уровня и т.п.), поэтому абсолютно непонятно это натягивание совы на глобус.

Ну раз автор уверен, что ему надо именно это, и так и не смутился десятком наводящих вопросов...
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236265
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
Выше сказали myBatis
Но кода буде не меньше, т.к. связи зашиты в наборы данных в хранимках
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236295
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1вадяAtum1 - странный, не хочет отвечать на конкретные вопросы, но хочет помощи....

я выпал немного из обсуждения... пробовал другие провайдеры ...

задача сводится к следующему :

мапить множественные резалтсеты через api jpa 2.1 на pojo ( в общем случае не entity , без id )без ручного разбора.
я несколько раз задал ворос, ответь и будем дальше действовать

Petro123 вадя,
Ты его просто не знаешь. Он работает с ОРМ и ему нравится ОРМ. Ты его нагибал орм выкинуть.
я ведь не заставляю что-то выкидывать, просто прошу дать ответ.
потому как я вижу где у него может быть ошибка.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236324
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
imho он тебе ответил - ID уже не важен. Объекты могут повторятся\по барабану.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236348
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
imho он тебе ответил - ID уже не важен. Объекты могут повторятся\по барабану.
и опять таки id здечь уже как следствие....
вот работают через хибер и не понимают ничего в базах, чуть в сторону и хватают проблемы....
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236355
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример :


где в последнем RS всегда вернется статус корректно или нет отработала процедура

Код: plsql
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.
DELIMITER $$

DROP PROCEDURE IF EXISTS `PR_GET_MPARAMETERS` \p$$
CREATE PROCEDURE         `PR_GET_MPARAMETERS` (
--
    IN  a_id       int(10) unsigned -- идентификатор
  , IN  a_dr       int(10) unsigned -- номер
)
l_proc:
BEGIN

--   блок DECLARE
 DECLARE v_id BIGINT UNSIGNED DEFAULT NULL;
...

--  проверки 100500 строк выставление значения v_id

....

  -- result set
      SELECT  ****** ;

      -- result set
      SELECT  `num`       AS a_num
            , `amount`    AS a_amount
            , `count`     AS a_count
            , `comb`      AS a_comb
            , `pr`   AS a_pr
      FROM `T$CAT`
        WHERE `pr_id` = v_id
      ;

    END IF;

    IF @@error_count <> 0 THEN
      SET v_sign = PROG_ERROR;
    END IF;

    -- result set
    SELECT v_sign;

END \p$$

DELIMITER ;


-- раздача грантов для данных процедур
-- GRANT EXECUTE ON PROCEDURE 


...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236369
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
это к чему ?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236398
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи опять таки id здечь уже как следствие....
вот работают через хибер и не понимают ничего в базах, чуть в сторону и хватают проблемы....
вот тебя опять в сторону потянуло.
1. Id никому уже не нужен в данном сабже.
2. Причём тут разговор про всех, хибер и погоду за окном.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236412
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Id никому уже не нужен в данном сабже.
если б ты ходил по ссылкам тс и смотрел его код внимательно, ты б такое не написал.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236430
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли б ты ходил по ссылкам тс и смотрел его код внимательно, ты б такое не написал.
опять бла бла и Мы знаем лучше что у автора болит? Даже если автор говорит обратное.
Последнюю страничку только и говорили про простой перелив объектов коллекции.
Удачи!
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236470
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоследнюю страничку только и говорили про простой перелив объектов коллекции.
не смотришь код, не понимаешь о чем речь....
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236533
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяне смотришь код, не понимаешь о чем речь....
не ходишь в магазин, не убираешься в подъезде...
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236639
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяне смотришь код, не понимаешь о чем речь....
не ходишь в магазин, не убираешься в подъезде...

И так работает все если :

1) Использовать EclipseLinkJpaVendorAdapter

а так же указать ему магию :


jpaProperties.put("eclipselink.weaving", "false");

убрать инструменталирование кода

jpaProperties.put("jpaDialect"," org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect");

дать возможность в качестве id у entity использовать значение 0

jpaProperties.put("eclipselink.allow-zero-id","true");






Код: 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.
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

        EclipseLinkJpaVendorAdapter vendorAdapter = new EclipseLinkJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(false);
        vendorAdapter.setShowSql(true);
        vendorAdapter.setDatabase(Database.MYSQL);

        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(GamePropsDataSource());
        em.setPackagesToScan(new String[]{"ru.stoloto.protocol.entities"});
        em.setPersistenceUnitName("persistanceUnitGameProps");
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());
        Map<String, String> jpaProperties = new HashMap<>();
        jpaProperties.put("eclipselink.weaving", "false");
        jpaProperties.put("jpaDialect"," org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect");
        jpaProperties.put("eclipselink.allow-zero-id","true");
        jpaProperties.put("eclipselink.query-results-cache","true");
        em.setJpaPropertyMap(jpaProperties);
        em.afterPropertiesSet();

        return em;

    }

    @Bean
    public EclipseLinkJpaDialect eclipseLinkJpaDialect() {
        return new EclipseLinkJpaDialect();
    }




Тогда мапинг идет просто через jpa 2.1

StoredProcedureQuery query = em.createStoredProcedureQuery("PR_MPARAMETERS",MProperties.class,Cat.class,Sign.class);

и резалтсеты мапятся в pojo / сами !

но при этом !!! Нужно в объектах указать все равно что они @Entity и у них есть Id (!!!!)

Id необходим для внутреннего отображения в коллекции при мапинге ... без него никак.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Entity
public class Sign  implements Serializable {


    private static final long serialVersionUID = 1L;

    @Id
    private Integer sign;

    public Integer getSign() {
        return sign;
    }

    public void setSign(Integer sign) {
        this.sign = sign;
    }
}



Это все равно лучше чем руками перекладывать по полям pojo объектов из резатсетов значения ... через rowmapper или что то другое ...


Хотя я удивлен что нет нормального решения через рефлексию для мапинга из резатсетов в коллекции pojo объектов :( стоит такое создать ...
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236687
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Это все равно лучше чем руками перекладывать по полям pojo объектов из резатсетов значения ... через rowmapper или что то другое ...
Хотя я удивлен что нет нормального решения через рефлексию для мапинга из резатсетов в коллекции pojo объектов :( стоит такое создать ...
- при желании, Id-счётчик можно сгенерить прямо во время запроса. Он будет не уникальный для БД, а уникальный для маппинга. Я не знаю что вам именно нужно.
2. Можно соединять один Id из одного набора записей со вторым. Например, Id будет 123,45 - нецелое число.
Не знаю, будет ли работать ОРМ с ним \ JPA. У меня без ОРМ - работает.
авторЭто все равно лучше чем руками перекладывать по полям pojo объектов из резатсетов значения
я пока этого не видел. Т.к. в коде что ты приводил (говорил что он фиктивный), ты лазил по одному - другому и использовал зависимости в коде. Т.е. БЛ была зашита прямо в код.
Но, если у тебя всё получилось, то я рад - удачи!
Atum1стоит такое создать ..
нет. мульти сеты нафиг не нужны. А без них, на SQL'е всё работает.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum11) Использовать EclipseLinkJpaVendorAdapter
пров JPA кто?
Я так понял MyBatis ты не юзал.
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236812
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

спасибо !

пока MyBatis еще не смотрел .


- при желании, Id-счётчик можно сгенерить прямо во время запроса. Он будет не уникальный для БД, а уникальный для маппинга. Я не знаю что вам именно нужно.
2. Можно соединять один Id из одного набора записей со вторым. Например, Id будет 123,45 - нецелое число.
Не знаю, будет ли работать ОРМ с ним \ JPA. У меня без ОРМ - работает.
автор
Это все равно лучше чем руками перекладывать по полям pojo объектов из резатсетов значения



Это как ? есть пример кода ?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
У меня sql без мульти изврата. Нужно?
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236876
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
тебе задали вопросы - ответь, решение может оказаться очень простым
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39236904
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Это как ? есть пример кода ?
на память псевдокод:
ВИ
====
- В ИС А есть 2-е сущности, которые в отдельных справочниках с возможным пересечением ID
- В ИС Б проектируемой нет таких тонкостей и нужно огрегированное одно из двух.
Например в А есть самолёты и паровозы. А в Б мы учитываем как Средства передвижения.
- делаем типа фасада в виде вьюхи у себя или в системе А.
Код: sql
1.
2.
3.
select to_number(id||'.1')  ID, t.* from Самолёты
union all
select to_number(id||'.2')  ID, t.* from Паровозы


Потом у себя в ИС Б работаем только через вьюху на внешнюю ИС.
я у себя поменял только тип поля с целого на дробный. Остальное всё работает как с целым PK
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237074
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Atum1,
У меня sql без мульти изврата. Нужно?

да.

АПИ все таки не все состоят из множественных RS :)
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237075
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAtum1,
тебе задали вопросы - ответь, решение может оказаться очень простым

Вадя, можно еще раз продублировать вопрос .
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237327
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как ты определяешь, что не id?
и
приведи пример реальной хранимки для которой нет id.
и
как ты с этой хранимкой работаешь
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237352
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякак ты определяешь, что не id?
и
приведи пример реальной хранимки для которой нет id.
и
как ты с этой хранимкой работаешь


1)
нет id - это я привел пример - в одном из RS ( в каждой ХП ) есть статус выполнения данной ХП - код ошибки или 0 в случае успеха

id != 0 как известно )

2)
как работаю - я код скинул 19161713
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237460
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
это не ответ, я всё это прочитал, и я везде увидел id.
постарайся чётко ответить на вопросы - хранимка, код с хранимкой и прочее
...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237484
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAtum1,
это не ответ, я всё это прочитал, и я везде увидел id.
постарайся чётко ответить на вопросы - хранимка, код с хранимкой и прочее

Самая простая с 1 RS

Код: plsql
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.
SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'\p;
use db_rt\p;

-- ===========================================================================
-- 1. drop/create 

DELIMITER $$

DROP PROCEDURE IF EXISTS `gettemplate` \p$$

CREATE PROCEDURE `gettemplate` (
	IN a_id BIGINT UNSIGNED,
	IN a_agntid INTEGER UNSIGNED,
	IN a_type ENUM ('type1', 'type2'),
	IN a_drawid INTEGER UNSIGNED,
	IN a_tm BIGINT UNSIGNED
)
l_proc: begin

    DECLARE V_SIGN_OK INTEGER UNSIGNED DEFAULT 0;
    DECLARE V_INVALID_ID INTEGER UNSIGNED DEFAULT 1;
    DECLARE V_NO_READY_ID INTEGER UNSIGNED DEFAULT 2;
    DECLARE V_NO_READY_ID2 INTEGER UNSIGNED DEFAULT 3;
    
    DECLARE v_res_sign INTEGER UNSIGNED DEFAULT V_SIGN_OK;
    
    DECLARE v_tempid BIGINT UNSIGNED;
    DECLARE v_lawid BIGINT UNSIGNED;
    DECLARE v_adsid BIGINT UNSIGNED;

    DECLARE v_temp_text VARCHAR(4000);
    DECLARE v_law_text VARCHAR(4000);
    DECLARE v_ads_text VARCHAR(1000);
    
    DECLARE v_gmid BIGINT UNSIGNED DEFAULT NULL;
   
    SELECT `id` INTO v_gmid FROM `gm` WHERE `pr_id` = a_id;
    
    IF v_gmid IS NOT NULL THEN
    
		
		SELECT MAX(`id`) INTO v_tempid FROM `rt_temp` 
		WHERE v_gmid = `gmid` AND `st` = 'can' AND
			(FROM_UNIXTIME(a_tm) >= `min_date` OR `min_date` IS NULL ) AND
			(a_drawid >= `min_id` OR `min_id` IS NULL);

		IF v_tempid IS NOT NULL THEN
			SELECT `temp_text` INTO v_template_text FROM `receipt_template` WHERE `id` = v_tempid;
		ELSE
			SET v_res_sign = V_NO_ID;
		END IF;


		IF v_res_sign = V_SIGN_OK THEN
			
			SELECT MAX(`id`) INTO v_law_info_id FROM `law_info`
			WHERE v_gmid = `gm_id` AND `st` = 'can' AND `txt_type` = a_type AND
				(FROM_UNIXTIME(a_tm) >= `min_date` OR `min_date` IS NULL ) AND
				(a_drawid >= `min_id` OR `min_id` IS NULL);

			IF v_lawid IS NOT NULL THEN
				SELECT `lawtxt` INTO v_law_text FROM `lawinfo` WHERE `id` = v_lawid;
			ELSE
				SET v_res_sign = V_NO_READY_ID2;
			END IF;

		END IF;


		IF v_res_sign = V_SIGN_OK THEN
			
			SELECT MAX(`id`) INTO v_adsid FROM `adsinfo`
			WHERE (v_gmid = `gm_id` OR `gm_id` IS NULL) AND `st` = 'can' AND
			(a_agntid = `agntid` OR `agntid` IS NULL) AND
			(FROM_UNIXTIME(a_tm) >= `min_date` OR `min_date` IS NULL ) AND
			(FROM_UNIXTIME(a_tm) <= `max_date` OR `max_date` IS NULL ) AND
			(a_drawid >= `min_id` OR `min_id` IS NULL) AND
			(a_drawid <= `max_id` OR `max_id` IS NULL);


			IF v_ads_id IS NOT NULL THEN
				SELECT `ads_text` INTO v_ads_text FROM `adsinfo` WHERE `id` = v_ads_id;
			END IF;

		END IF;
		
	ELSE
		SET v_res_sign = V_INVALID_ID;
	END IF;
	
	SELECT v_res_sign, v_temp_text, v_law_text, v_ads_text, v_temp_id, v_law_id, v_ads_id;
	
end
\p$$

DELIMITER ;

-- ===========================================================================


GRANT EXECUTE ON PROCEDURE `db_rt`.`gettemplate` TO 'a_user'@'%' \p;

-- the END
-- ===========================================================================

...
Рейтинг: 0 / 0
Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
    #39237519
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
при таких ответах, отпадает желание помогать,
сколько можно повторять????
нужен полный ответ, а не какие-то пародии имитирующие знание предмета.
тебе нужна помощь - напряги извилины - ответь на вопросы полно
...
Рейтинг: 0 / 0
94 сообщений из 94, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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