Как преобразовать результат пользовательского запроса в класс JAVA POJO

У меня сложный запрос, который извлекает данные из разных таблиц, а затем его нужно преобразовать в JAVA POJO для отображения. Я пробовал использовать для этого трансформаторы, но получаю сообщение об ошибке «org.hibernate.PropertyNotFoundException: не удалось найти установщик для идентификатора в классе com.db.loud.dto.lem.Feed»

Если я перейду с идентификатора на идентификатор (CAPS), мой класс POJO будет работать нормально. Но переменные java называются не так.

Что здесь не так или есть лучший способ сделать это.

Ниже код из класса DAO:

    Session session = getSession();
    String sql = "select a.id, a.name, b.id, b.f1, c.f2, c.f3 from table1 a, table2 b, table3 c where ......................................";

    SQLQuery query = session.createSQLQuery(sql);
    query.setString("id", id.toString());
    query.setResultTransformer(Transformers.aliasToBean(Feed.class));
    List<LemFeed> list = query.list();

Вот Feed - это мой класс JAVA POJO:

  public class LemFeed implements Serializable{
  private String id;
  private String name;
  private String f1;
  private String f2;
  private String f3;
  private String f4;
 }

можно ли вместо этого использовать Hibernate Query Language HQL?

nabeel 04.08.2018 18:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
297
2

Ответы 2

С JPA вы можете указать явное имя столбца (и многое другое) для отображаемого поля POJO, используя @Column. Пример:

@Column(name = "ID")
private String id;

После изменения имен полей на заглавные, возникает ошибка "org.hibernate.HibernateException: не удалось создать экземпляр класса result: com.db.loud.dto.lem.Feed"

user5636236 02.05.2018 16:08

Использовал AddScalar для того же, чтобы решить проблему.

        List<KondorRecord> kondorRecords = session.createSQLQuery(sql)
            .addScalar("facilityId", new LongType())

Другие вопросы по теме