Nano Hash - криптовалюты, майнинг, программирование

Простое отличие в Spring JPA

Как бы вы получили список/массив различных значений в таблице, используя JPA?

Допустим, у меня есть объект и репозиторий объекта Foo из таблицы со столбцами a, b, c. Все, что я хочу, это определить все уникальные (различные) значения в столбце b, где c равно «bar», и вернуть его (различные значения b) в виде списка строк (а не объектов Foo).

Другие ORM мне показались очень простыми, но я не могу понять, как это сделать через JPA. Это запрос, который не сопоставляется с объектом, а просто извлекает значения в виде простого списка строк.

Можно ли это сделать в JPA, если да, то как?

04.11.2016


Ответы:


1

Просто используйте этот простой запрос JPQL:

select distinct foo.b from Foo foo where foo.c = 'bar'
04.11.2016
  • Это первое, что я попробовал. Не могли бы вы предоставить полную структуру с аннотацией и сигнатурой метода? 04.11.2016
  • Это именно то, за чем я следую, но получаю: не удалось разрешить свойство: b of: com.bar.entity.Foo [выбрать отдельный foo.b из com.bar.entity.Foo foo, где foo.c = ? 1] 04.11.2016
  • Это означает, что в объекте Foo нет свойства с именем b. Отредактируйте свой вопрос и опубликуйте всю необходимую информацию: реальный код вашего объекта, реальный соответствующий код вашего репозитория и трассировку стека исключения. 04.11.2016

  • 2

    запрос - это один из способов, как сказал JB Nizet

    Другой способ с java8, я бы определил эти методы в самом репозитории. Найдите отдельный Foos, а затем преобразуйте его в список b и верните. Вызовите этот метод с любым параметром, который вы хотите.

    public interface FooRepository extends CrudRepository.. {
    // name this method whatever you want
    default List<String> findDistinctbs(final String b) {
        // note following is jpa convention to get list of Foos..
        List<Foo> fooList = findDistinctByb(String b);
        List<String> bList = fooList.stream().map(Foo::getB).collect(Collectors.toList());
        return bList;
    }
    
    04.11.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..