powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
25 сообщений из 94, страница 1 из 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
25 сообщений из 94, страница 1 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring JPA 2.1 NamedStoredProcedureQuery more complex example with multiple results
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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