• Hibernate, как инициализировать вычисляемое поле в Entity?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Хочу добавить в этот класс поле, которого нет в базе

    Подозреваю, что вам нужно сделать следующее:
    1) создать поле с аннотацией @Transient
    Например,
    @Transient
    private long calc;

    https://stackoverflow.com/questions/2154622/why-do...
    Таким образом это поле не будет хранится в БД.

    ...которое вычисляется на основе других полей.

    2) К этому полю добавить аннотацию @Formula
    https://thorben-janssen.com/hibernate-tips-calcula...

    Прочитайте вот, эту статью - https://vladmihalcea.com/how-to-map-calculated-pro...

    Другой вариант выполнить пункт 1. Но вместо использования аннотации @Formula создать метод с аннотацией @PostConstruct и затем уже инициализировать ваше поле с нужным значением
    Ответ написан
    1 комментарий
  • Верно ли я указал наследование в Java проекте?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Не верно.
    Легче понять вашу ошибку, если проговорить словами код написанный вами.
    Вот, ваш код:
    public class University{}
    public class Faculty extends University {}
    public class Group extends Faculty {}
    public class Student extends Group {}

    Итак, вы говорите, что есть некий Университет
    Факультет РАСШИРЯЕТ Университет. Уже нестыковка. Ведь, в Университете ИМЕЮТСЯ Факультеты. Далее вы говорите, что Группа расширяет Факультет. Что тоже нелогично, ибо каждый факультет ВКЛЮЧАЕТ в себя группы.
    Дальше вы говорите, что Студент расширяет класс Группы. Тоже ведь, нелогично, так как каждая группа содержит в себе некоторое количество студентов.

    Более корректным будет следующая реализация:
    public class University {
    private List<Faculty> faculties;
    }
    public class Faculty{
    private List<Group> groups;
    }
    public class Group{
    private List<Student> students;
    }
    public class Student {}

    Притом вместо List можно использовать Set, так как каждый факультет уникален, также как и группа и студенты.
    Ответ написан
    1 комментарий
  • Как удалить пост с помощью get запроса?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    При нажатии на кнопку должен удаляться пост. Мне сложно сориентироваться как правильно это сделать.


    Давайте разделим работу на несколько условных частей и разберем поотдельности.
    1) Back-end.
    Создайте сервлет, который будет обрабатывать ваши get запросы на удаление записи.
    Например, структура запроса должна быть примерно такой:
    /posts/delete/{id}
    Конечно, правильнее было бы сделать урл иной структуры, но пока не будем на этом зацикливаться. В данном случае {id} это id поста, который нужно удалить.
    Соответственно, получаете запрос из фронта и достаете из урла id статьи.
    Далее обращаетесь в базу данных (скорее всего вы используете jdbc). Находите статью по этому id и удаляете ее.

    2) Front-end
    Вам из фронта нужно выполнить запрос на удаление статьи.
    Судя по вашему коду <c:forEach var="post" items="${postList}"> у вас выводится некий цикл (список) статей.
    А эта кнопка предназначена для удаления статьи.
    <a class="btn btn-primary btnPost" role="button">Delete</a>


    Измените кнопку и добавьте в нее href атрибут, в котором укажите url на который нужно сделать запрос и id поста, который вы получаете отсюда post.getId()
    Ответ написан
    Комментировать
  • Как получать котировки акций на Java?

    @alexalexes
    Вопрос слишком общий.
    Ответ тоже общий:
    1. Выбирается источник данных.
    2. Изучается формат данных, либо API.
    3. Ищется инструмент для данной среды разработки для чтения данного формата, либо обращения к API.
    4. Ищется инструмент визуализации полученных данных, либо используются встроенные компоненты.
    Ответ написан
    Комментировать
  • JAVA, можете ли вы объяснить странное для меня for(: );?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Noodle noodle : allTheNoodles
    Условно можно прочитать как: переменная noodle в массиве объектов Noodle[].
    Это тип цикла for each, где итерируя вы получаете каждый объект содержащийся в массиве Noodle[]
    А чтобы обратиться к соответствующему объекту в цикле вы можете использовать переменную noodle. Т.е. в каждой итерации этой переменной будет присвоен следующий объект содержащийся в массиве
    Ответ написан
    Комментировать
  • Существуют ли публичные алгоритмы семантического поиска вхождений подстроки в строке?

    2ord
    @2ord
    Solr умеет выводить подсветку найденных результатов в тексте. https://lucene.apache.org/solr/guide/6_6/highlight...
    Sphinx Search/Manticore тоже, см. SNIPPET()
    mysql>  CALL SNIPPETS('this is my hello world document text I am snippeting now', 'myindex', 'hello world', 5 as limit_words);
    +------------------------------------------------+
    | snippet                                        |
    +------------------------------------------------+
    |  ...  my <b>hello world</b> document text ...  |
    +------------------------------------------------+
    1 row in set (0.00 sec)
    Ответ написан
    Комментировать
  • Как побороть сонливость и апатию в течение дня?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Мне помогла ипотека, автокредит, трое детей и неработающая жена.
    Ответ написан
    9 комментариев
  • Актуальна ли разработка gui на java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Устаревание тут не при чём. Если спрос на огурцы в это году больше, чем на помидоры, то это не значит, что помидоры устарели. Есть множество сценариев, в которых web-приложения не смогут заменить десктопные. Справедливо и обратное.
    Ответ написан
    Комментировать
  • Как создать кастомные страницы для Access Denied Page и Error Whitelabel Page в Spring Security?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Access denied (Forbidden) - 403 ошибка.
    Создайте controller или controllerAdvice для http ошибок.

    @Controller
    public class HttpErrorController implements ErrorController {
    
        private final MessageSource messageSource;
    
        @Autowired
        public HttpErrorController(MessageSource messageSource) {
            this.messageSource = messageSource;
        }
    
        @RequestMapping("/error")
        public String handleError(
                Locale locale,
                Model model,
                HttpServletRequest request,
                Exception ex
        ) {
    
            Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    
            if (status != null) {
    
                int statusCode = Integer.valueOf(status.toString());
    
                Map<String, String> metaData = new HashMap<>();
    
                // 403
                if (statusCode == HttpStatus.FORBIDDEN.value()) {
    
                   // do somthing
                }
    
                // 404
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    // do somthing
                }
    
                // 405
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    // do somthing
                }
    
                // 500
                else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                   // do somthing
                }
    
            }
    
    
            return "templates/errors/httperrors";
        }
    
        @Override
        public String getErrorPath() {
            return "/error";
        }
    
    }


    Чтобы отключить whitelibel page добавьте в properties
    # Disable Whitelabel Error Page
    server.error.whitelabel.enabled=false
    Ответ написан
    1 комментарий
  • Как лучше хранить сотни миллионов значений в Wordpress для быстрого поиска?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Подключите к вашему сайту WordPress - ElasticSearch и постройте индексы.
    Так будет лучше в плане производительности
    https://www.elastic.co/

    Или же можете подключить -
    sphinxsearch.com
    Ответ написан
    Комментировать
  • Как отправить запрос с nodejs на сайт и выполнить действия?

    hzzzzl
    @hzzzzl
    npm puppeteer
    https://github.com/puppeteer/puppeteer

    загружать "безголовый браузер", дожидаться загрузки страницы в память, и кликать по css-селекторам
    https://stackoverflow.com/a/52905335

    примеры
    https://github.com/checkly/puppeteer-examples
    Ответ написан
    Комментировать
  • Сертификация или курсы для Spring / Hibernate, воспринимаемые рынком?

    AFX
    @AFX
    Чтобы получить доступ на экзамен по Spring Framework, необходимо заплатить за 4-дневный курс около 2000 Евро (цену точно не помню), не важно гуру ли ты, либо новичок, только после этого ты имеешь возможность сдавать экзамен. Планировал как-то, но платить лишние 2 000 евро, за то что и так знаешь, считаю недопустимым!
    Ответ написан
    Комментировать
  • Что выбрать для полнотекстового поиска по большому объёму данных?

    2ord
    @2ord
    Sphinx/Manticore Search могут подойти и по экономичности и по объему данных.
    Эластик скушает всю память и не подавится.

    Добавлено
    Есть и другие игроки.
    Solr has been more oriented towards text search. Elasticsearch quickly carved out its niche, aiming for log analytics by creating the Elastic Stack

    Apache Solr. SolrCloud - шардинг и репликация. Solr умеет анализировать (искать) различные документы.
    Elasticsearch vs. Solr vs. Sphinx: Best Open Sourc...
    Для извлечения текста и метаданных самостоятельно можно использовать фреймворк Apache Tika.
    Apache Hadoop - для хранения PDF.
    Такой объем данных будет нелегко обработать. Будет много мороки с инфраструктурой и эксплуатацией ПО.
    Ответ написан
    1 комментарий
  • Плюсы и минусы оформления с почасовой оплатой?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Вам просто нужно умножить вашу ЗП которую вы ожидаете на 1.5-2 ... тогда все разговоры можно продолжать и на почасовой оплате )
    Ответ написан
    Комментировать
  • Аналог jira но без тормозов?

    @maniac_by
    А где в JIRA тормоза? Если облачная работает медленно, то смотрите ваш интернет или ставьте Сервернуюв ерсию. А функциональнее и лучше (к сожалению) в данный момент, чем Джира не существует
    Ответ написан
    4 комментария
  • Зачем нужен Optional и почему над null нельзя выполнить те же действия?

    @koperagen
    Вы и так можете проверить проверить ссылку на null, без каких-то дополнительных методов и сущностей. Optional здесь явным образом сообщает, что результат метода может существовать (значение), либо не существовать (null) и не даёт получить значение, не сделав выбор, как обработать ситуацию с его отсутствием. Кроме обычного get() есть ещё методы getOrElse(), позволяющий указать значение по умолчанию, getOrNull().

    Ещё бывает удобно сначала выполнить цепочку преобразований над Optional при помощи метода map(), а в конце получить значение любым удобным способом и дальше работать с "чистым" объектом ожидаемого типа.

    В kotlinе (раз язык не принципиален) на помощь с борьбой с NPE приходят nullable типы. Каждый класс порождает два типа, к примеру для класса Person это будет Person и Person?. В сигнатурах методов можно явно указать, какой из типов допустим. Если Person?, то компилятор вынудит вас обработать случай с приходом null. Так же вы не сможете вернуть из метода null, если объявили в качестве результата тип Person. Программа просто не скомпилируется. Все ради того, чтобы null не приходил из неожиданных мест, обрабатывался и не ронял программу.
    Ответ написан
    Комментировать
  • Как исправить неправильный тип данных в документе Elasticsearch?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Это из-за отсутствия изначального маппинга. Эластик в этом плане очень туп и если ему сразу не объяснить правила игры то на новые он не соглашается. Есть 2 варианта:
    - убить индекс, пересоздать с правильным маппингом, перезалить данные
    - создать рядом индекс с правильным маппингом, скопировать туда данные, удалить старый индекс и создать алиас
    Ответ написан
    Комментировать
  • Где можно найти ментора по Java?

    @protven
    Есть два ответа.
    1) Да нигде. Ставка более-менее приличного спеца по джяве - начиная от 25$ в час. Это просто для человека знающего джяву. Человек, который берется преподавать - ему надо тратить кучу времени и ресурсов, чтобы подготовить учебный план. Работать в удобном вам режиме "я спросил, ты ответил, я тебе заплатил за пять минут времени" - ну кому это нахрен надо?
    2) На работе. Такой человек называется тимлид. Устраивайтесь стажером куда возьмут и там узнавайте бестпрактисы у более старших товарищей.

    PS Точно говорю, никому вы не нужны, хотите развиваться - развивайтесь, тем более сейчас это гораздо проще, чем 10 лет назад, когда я задавался таким же вопросом, где бы ментора найти.
    Ответ написан
    Комментировать
  • Прием платежей на сайте с карты (банк Тинькофф). Как реализовать?

    @alex1478
    Так делать нельзя, вы быстро получите бан карты в Тинькофф. А если звёзды сойдутся, ещё и в полиции придётся доказывать что люди вам сами вводили свои карты, а не вы использовали свой счёт для темных дел.
    Как я понимаю вы хотите принимать платежи с карт физиков на карту физика для обхода налоговой, это не законно, я думаю вы это сами понимаете.
    Правильно сделать так: Открыть ИП, заключить договор с платёжным шлюзом, в приложении показывать форму оплаты от шлюза через webview,
    Ответ написан
  • Как развиваться в DevOPS нуля?

    inf
    @inf
    DevOps Engineer
    Однозначные пути ещё не сформировались.
    Проще быть уже разработчиком(python/ruby/go) и заняться инфраструктурой. Главное как можно быстрей устроиться хоть куда-нибудь, хоть бесплатно, чтобы получать адекватный опыт.
    Книги и курсы без реальных задач это просто интересные истории.
    Ответ написан
    Комментировать