JPQL pewne kłopotliwe zapytanie

0

Witam
Mam problem z jednym zapytaniem, mianowicie. Piszę swoją pierwszą aplikację w java EE z wykorzystaniem JPA + JSF. I chcialbym pobrac z bazy danych liste zamowien lecz tylko interesuja mnie wartosci "czasu trwania zamowienie" oraz "zaplaty". W klasie ziarna zarządzanego mam taką oto metodę:

@ManagedBean
@SessionScoped
public class ZamowienieWsBean {
    
    private List<ZamowienieWs> lista;

public List<ZamowienieWs> getLista() {
        EntityManager em = DBManager.getManager().createEntityManager();
        lista = em.createQuery("SELECT new ZamowienieWs(z.dlugosc,z.zaplata) FROM ZamowienieWs z").getResultList();
        em.close();
        return lista;
    }

public ZamowienieWs getZamowienie() {
        return zamowienie;
    }

    public void setZamowienie(ZamowienieWs zamowienie) {
        this.zamowienie = zamowienie;
    }
    
    public ZamowienieWsBean() {
    }}

W klasie encji stworzylem konstruktor specjalnie dla tego zapytania:

public ZamowienieWs(Integer dlugosc, Float zaplata) {
        this.dlugosc = dlugosc;
        this.zaplata = zaplata;
    }

Widok odpowiedzialny za wyswietlanie zawartosci listy wyglada nastepująco:

<ui:define name="content">
        <h:form>
            <h:dataTable value="#{zamowienieWsBean.lista}" var="ws">
                <h:column>
                    <f:facet name="header">Zaplata</f:facet>
                    <h:outputText value="#{ws.zaplata}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Dlugosc</f:facet>
                    <h:outputText value="#{ws.dlugosc}"/>
                </h:column>
            </h:dataTable>
        </h:form>
    </ui:define>

I wszystko powinno byc ok (tak mi sie wydawalo) ale niestety dostaje taki oto wyjątek:
An exception occurred while creating a query in EntityManager: Exception Description: Error compiling the query [SELECT new ZamowienieWs(z.dlugosc,z.zaplata) FROM ZamowienieWs z], line 1, column 7: constructor class [ZamowienieWs] not found.

Wie ktos może dlaczego nie widzi konstruktora??

0

To ze to jest encja nie ma nic do rzeczy, ten konstruktor moze byc w jakiejkolwiek klasie, ktora musi byc uzyta razem z pakietem, nie sama nazwa klasy.

Specyfikacja JPA2:

A constructor may be used in the SELECT list to return an instance of a Java class. The specified class
is not required to be an entity or to be mapped to the database. The constructor name must be fully qual-
ified.

I podaje przyklad:

SELECT NEW com.acme.example.CustomerDetails(c.id, c.status, o.count)
FROM Customer c JOIN c.orders o
WHERE o.count > 100

Czyli dodaj pakiet do nazwy klasy i powinno pojsc.

0

Dzięki wielkie pomogło;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1