Swapnil722 Ответов: 0

Net.sf.jasperreports.engine.jrexception: ошибка извлечения значения поля из bean:


Получение:
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: fullname.


Только при использовании NativeQuery в Hibernate с JasperReports.

Что я уже пробовал:

Когда я использую запрос критериев JPA, то нет никаких проблем

Критерии СПД
try (Session session = sessionFactory.openSession()) {
    CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
    CriteriaQuery<Client> criteriaQuery = criteriaBuilder.createQuery(Client.class);
    Root root = criteriaQuery.from(Client.class);
    criteriaQuery.where(criteriaBuilder.equal(root.get("id"), id));
    return session.createQuery(criteriaQuery).getResultList();
}


Но когда я использую NativeQuery я сталкиваюсь с
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: fullname.


Собственный Запрос :
try (Session session = sessionFactory.openSession()) {
    List Client query = session.createNativeQuery("select c.*, p.* from client c join product p on c.pid = p.id where c.id = :id")
            .addEntity("c", Client.class).addJoin("p", "c.product")
            .setParameter("id", id).list();
    return query;
}



Вот Джаспер младший.

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Quotation" pageWidth="595" pageHeight="600" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3954e5eb-656a-454e-b9e5-35f7e5262d48">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <field name="fullname" class="java.lang.String"/>
    <field name="mobile" class="java.lang.String"/>
    <field name="city" class="java.lang.String"/>
    <field name="address" class="java.lang.String"/>
    <field name="quotationNo" class="java.lang.String"/>
    <field name="valid" class="java.lang.String"/>
    <field name="product.description" class="java.lang.String"/>
    <field name="product.cost" class="java.lang.String"/>
    <field name="product.name" class="java.lang.String"/>



Client.java:

public class Client  implements java.io.Serializable {


     private Integer id;
     private Product product;
     private String fullname;
     private String business;
     private String address;
     private String city;
     private String mobile;
     private String addedBy;
     private String date;
     private String status;
     private String quotationNo;
     private String valid;
     private String productName;
     private Set orderses = new HashSet(0);
  
    public String getFullname() {
        return this.fullname;
    }
    
    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

Richard MacCutchan

То fullname поле является частным, поэтому доступно только по адресу: getFullname метод.

Swapnil722

Но вы можете видеть, что нет никаких проблем с использованием API критериев JPA, так что же происходит для NativeQuery?

Swapnil722

И возвращаемое значение одинаково при использовании критериев NativeQuery и JPA, которые являются запросом List<client & gt;.....

Другое дело-это только способ извлечения данных. Так что проблема заключается в JasperReport, который слишком сильно раздражает.

Richard MacCutchan

Извините, я не знаю Джаспера.

Swapnil722

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

Richard MacCutchan

Вы, вероятно, найдете помощь в Библиотека JasperReports® | Сообщество Jaspersoft[^].

Swapnil722

Я попробую там. Я уже написал там для медленных отчетов, поэтому я настраивал запрос с помощью NativeQuery, чем JPA, и я получаю эту ошибку.

Итак, NativeQuery работает быстрее, чем критерии JPA?

Swapnil722

Спасибо за ваше "время", "внимание" и "усилия".

0 Ответов