powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Массивы в Java классе
18 сообщений из 18, страница 1 из 1
Массивы в Java классе
    #39080535
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Я новичок в Jave, столкнулся со странной проблемой в Spring фреймворке не могу установить значения элементов массава в классе

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

    public Status_mass (){};

    private Long[] login_id;
    public Long[] getLogin_id() {
        return login_id;
    }
    public void setLogin_id(Long[] login_id) {
        this.login_id = login_id;
    }

    private Integer[] status_id;
    public Integer[] getStatus_id() {
        return status_id;
    }
    public void setStatus_id(Integer[] status_id) {
        this.status_id = status_id;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
@RequestMapping(value = "/get_status_mass", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public Status_mass getStatusMass (@RequestBody Status_mass status_mass) {
        for(int i = 0; i <  status_mass.getLogin_id().length; i++) {
            status_mass.setStatus_id(userRepository.getStatusMass(status_mass.getLogin_id()[i]));   // Как правильно обратиться ????
        }
        return status_mass;
    }



проблема с setStatus_id, не понимаю как записать значение в массив
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080570
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.,

Это не Spring framework, а Spring MVC
Можно попробовать, например, так
http://stackoverflow.com/a/16297091
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080578
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey De.Добрый день!

Код: java
1.
2.
3.
4.
5.
6.
7.
@RequestMapping(value = "/get_status_mass", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public Status_mass getStatusMass (@RequestBody Status_mass status_mass) {
        for(int i = 0; i <  status_mass.getLogin_id().length; i++) {
            status_mass.setStatus_id(userRepository.getStatusMass(status_mass.getLogin_id()[i]));   // Как правильно обратиться ????
        }
        return status_mass;
    }



проблема с setStatus_id, не понимаю как записать значение в массив

getStatusMass(status_mass.getLogin_id()[i]) .... прекрасно работает, а вот как правильно написать set не понятно ....
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080596
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey De.,

Так то Spring тут не причем .... как в обычной Java делается установка элементов массива в классе?
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080632
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.Так то Spring тут не причем ...
Да? А топикастер так не считает:
Sergey De.столкнулся со странной проблемой в Spring фреймворке

Sergey De.. как в обычной Java делается установка элементов массива в классе?
Точно так же как и установка массива вне класса.
У вас код
Во-первых не понятно что делает.
Во-вторых не следует общепринятым стандартам именования.
В-третьих жутко нарушает инкапсуляцию.

setStatus_id() присваивает значение одной и той же переменной - ссылки на массив. Внимание вопрос. Зачем этот метод вызывать N раз?
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080642
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczSergey De.Так то Spring тут не причем ...
Да? А топикастер так не считает:
Sergey De.столкнулся со странной проблемой в Spring фреймворке

Sergey De.. как в обычной Java делается установка элементов массива в классе?
Точно так же как и установка массива вне класса.
У вас код
Во-первых не понятно что делает.
Я хочу просто в цикле заполнить массив результатом функции.

BlazkowiczsetStatus_id() присваивает значение одной и той же переменной - ссылки на массив. Внимание вопрос. Зачем этот метод вызывать N раз?

Утрирую ......
for(int i = 0; i < 5; i++) {
status_mass.setStatus_id(i*7)[i]); // Как правильно обратиться к элементам массива?
}

BlazkowiczВ-третьих жутко нарушает инкапсуляцию.
А что с ней не так?
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080881
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.Я хочу просто в цикле заполнить массив результатом функции.
Для начала, массив не плохо было бы создать.
И возникает логичный вопрос, если у вас два массива, то почему переменная-индекс используется только один раз?

Sergey De.Утрирую ......
for(int i = 0; i < 5; i++) {
status_mass.setStatus_id(i*7)[i]); // Как правильно обратиться к элементам массива?
}

Не бойтесь создавать локальные переменные. Без них вы даже сами свой код не можете понять, что уж другим.

Sergey De.А что с ней не так?
Сторонний класс-контроллер достаёт внутреннее состояние объекта класса Status_mass чтобы затем обновить это же внутренне состояние. Если метод полностью или частично унести в Status_mass, то код станет сильно проще.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39080885
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.,

А ещё если ваш репозиторий это вдруг база данных, то вместо того чтобы сделать 1 запрос, вы делаете их N, для каждого элемента.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39081037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De., твоя ситуация очень печальна. Она печальна тем что ты не знаешь основ.
Возможно ты и будешь кодить в среде Spring, но будешь постоянно бит и обижаем.

Почитай про массивы и коллекции в java. И разберись в чём разница.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39081139
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonSergey De., твоя ситуация очень печальна. Она печальна тем что ты не знаешь основ.
Возможно ты и будешь кодить в среде Spring, но будешь постоянно бит и обижаем.

Почитай про массивы и коллекции в java. И разберись в чём разница.

Я понимаю что я мальчик для битья, а что делать, иногда приходится и таким быть.
Читать основы надо, времени не хватает, давно надо было на Java переходить с десктоп разработок, а я все тянул и тянул ...
Сейчас приходит семимильными шагами наверстывать
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39081146
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczSergey De.,

А ещё если ваш репозиторий это вдруг база данных, то вместо того чтобы сделать 1 запрос, вы делаете их N, для каждого элемента.

Согласен, пробовал делать через IN в SELECT не получилось, формировал в строке все передаваемые значения в массиве и пихал в SELECT.

BlazkowiczДля начала, массив не плохо было бы создать.
И возникает логичный вопрос, если у вас два массива, то почему переменная-индекс используется только один раз?

Просто не вижу необходимости, т.к. элементы соответствуют входящим.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39081171
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.Читать основы надо, времени не хватает, давно надо было на Java переходить с десктоп разработок, а я все тянул и тянул ...
Сейчас приходит семимильными шагами наверстывать
Ой, хорош врать. Методы (функции), и массивы в большинстве ООП языков одинаковые.
1) Вы не создали массив.
2) Вы вызываете метод с одним типом аргумента, а передаёте ему значение другого типа.

Начните с изучение рефакторинга Introduce Variable. Когда эта лапша будет набором понятных переменных, вопросов сразу станет меньше.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Long[] loginIds = status_mass.getLogin_id();

for(int i = 0; i < loginIds.length; i++) {
   Long loginId = loginIds[i];
   Long statusId = userRepository.getStatusMass(loginId);
   Integer[] statusIds = //Магия, ведь "элементы соответствуют входящим."
   status_mass.setStatus_id(statusIds); //Мой вопрос задлянафига это делать в цикле успешно проигнорирован
}



Настоятельно рекомендуется к прочтению книжки Clean Code и Refactoring: Improving the Design of Existing Code.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39081718
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Blazkowicz]Sergey De.Ой, хорош врать. Методы (функции), и массивы в большинстве ООП языков одинаковые.

да согласен .... лох я ...
Blazkowicz1) Вы не создали массив.

Он же создается автоматом в контролере
public Status_mass getStatusMass (@RequestBody Status_mass status_mass) {
первый массив класса передается из запроса, второй заполняется в результате обращений к БД
Blazkowicz2) Вы вызываете метод с одним типом аргумента, а передаёте ему значение другого типа.

Правильно .... вот поэтому я и спрашивал, как можно сделать set в определенный элемент массива

Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Long[] loginIds = status_mass.getLogin_id();

for(int i = 0; i < loginIds.length; i++) {
   Long loginId = loginIds[i];
   Long statusId = userRepository.getStatusMass(loginId);
   Integer[] statusIds = //Магия, ведь "элементы соответствуют входящим."
   status_mass.setStatus_id(statusIds); //Мой вопрос задлянафига это делать в цикле успешно проигнорирован
}


Сенк, ну я дупель, думал же что надо сначала заполнить, а потом сделать set ... баран я


А как все же минимизировать количество запросов к БД, пробовал делать через IN в SELECT не получилось ругается на не соответствие типов.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// репозитарий
    @Query("select u.status_id from User u where u.id in (?1)")
    List <Integer> getStatusMassByLoginId (String sParam);
// контролер
    @RequestMapping(value = "/get_status_mass", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public List<Integer> getStatusMass (@RequestBody Status_mass status_mass) {
        String sParam = "";
        for(int i = 0; i <  status_mass.getLogin_id().length; i++) {
            sParam = sParam + String.valueOf(status_mass.getLogin_id()[i]) + ",";
        }
        sParam = sParam + "0";
        return userRepository.getStatusMassByLoginId(sParam);
    }


Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39082052
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.второй заполняется в результате обращений к БД
А что заполнять, когда заполнять нечего? Объявление переменной это ещё не создание экземпляра массива.

Sergey De.Правильно .... вот поэтому я и спрашивал, как можно сделать set в определенный элемент массива

Вариантов не много
1й. Добавить метод, который устанавливает значение в указанный элемент массива.
2й. Получить ссылку на массив и поместить значение в желаемый элемент массива.

метод setStatus_id устанавливает ссылку на массив и ни к первому ни к второму варианту отношения не имеет.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39082054
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]

С этим вопросом всё очень сложно. Нельзя список значений передать одним параметром запроса. Нужно динамически сгенерировать запрос в котором количество параметров будет совпадать с количеством значений, которые мы хотим передать.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39082279
Sergey De.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczSergey De.Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [1,2,3,0] did not match expected type [java.lang.Long (n/a)]
С этим вопросом всё очень сложно. Нельзя список значений передать одним параметром запроса. Нужно динамически сгенерировать запрос в котором количество параметров будет совпадать с количеством значений, которые мы хотим передать.
Я передаю не список, а строку, т.е. 1 параметр ... я так понимаю в JPA запрос не верно формируется из типов.
А как можно сгенерировать запрос динамически в Репозитарии? Я так понял что с использованием JPA можно только статические простые запросы выполнять.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39082294
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey De.Я передаю не список, а строку, т.е. 1 параметр ...

Не важно что вы и куда передаёте. С точки зрения SQL и RDBMS запрос вида SELECT ... WHERE ... IN () имеет столько параметров сколько их перечислено в IN.

Sergey De.я так понимаю в JPA запрос не верно формируется из типов.

Наконец-то пошла конкретика. JPA должен уметь кушать список целиком:
http://stackoverflow.com/a/4379008

Sergey De.А как можно сгенерировать запрос динамически в Репозитарии? Я так понял что с использованием JPA можно только статические простые запросы выполнять.
Spring Data и JPA это не слова синонимы, а два отдельных решения.
...
Рейтинг: 0 / 0
Массивы в Java классе
    #39082380
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczSergey De.А как можно сгенерировать запрос динамически в Репозитарии? Я так понял что с использованием JPA можно только статические простые запросы выполнять.
Spring Data и JPA это не слова синонимы, а два отдельных решения.

Я бы сказал, что spring-data это обертка над JPA.

А так динамические запросы в Spring-Data делаются ч/з Specification.
Чем-то смахивает на Criteria API.

Хотя простые запросы в репозитории есть by default.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Массивы в Java классе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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