У меня сложный запрос, который извлекает данные из разных таблиц, а затем его нужно преобразовать в 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;
}
С JPA вы можете указать явное имя столбца (и многое другое) для отображаемого поля POJO, используя @Column
. Пример:
@Column(name = "ID")
private String id;
После изменения имен полей на заглавные, возникает ошибка "org.hibernate.HibernateException: не удалось создать экземпляр класса result: com.db.loud.dto.lem.Feed"
Использовал AddScalar для того же, чтобы решить проблему.
List<KondorRecord> kondorRecords = session.createSQLQuery(sql)
.addScalar("facilityId", new LongType())
можно ли вместо этого использовать Hibernate Query Language HQL?