2015-03-15 16 views
5

problem jest następujący:jednostka Store JPA z danej dziedziny ID obiektu zamiast samego obiektu

Mamy podmiot:

@Entity 
public class Feedback { 
    @Id 
    @GeneratedValue(generator="token") 
    private String id; 

    @ManyToOne 
    private Product product; 

    private String message; 

    // other fields 
} 

I mamy końcowy serwera, który otrzymuje informacje zwrotne od klientów. Odpowiedź otrzymał w/formatu opartego na formularzu wieloczęściowy, z polami:

ProductId - product identifier 
Message - feedback message 
Some other fields 

Aby ustawić Feedback.product musimy załadować obiekt wyrobów z JPA - może to być czasochłonne i tworzy niepotrzebnych zapytań.

Czy można przechowywać obiekt, ale podać identyfikator produktu zamiast obiektu produktu? Potrzebujemy jakiś sposób modyfikacji zapytania INSERT.

Używamy EclipseLink JPA ze sprężyną i Vaadin.

Odpowiedz

6

Użyj EntityManager.getReference(): jeśli encja nie jest już załadowana, po prostu tworzy leniwy inicjowany serwer proxy wokół identyfikatora, bez powodowania wykonywania jakichkolwiek zapytań SQL.

+0

Dziękuję. Jak można sprawdzić, czy podmiot istnieje? Lub zmusić getReference wyrzucić wyjątek, jeśli nie ma jednostki o takim identyfikatorze? –

+0

Użyj find. Ale wtedy będziesz mieć zapytanie, którego chciałbyś uniknąć. –

Powiązane problemy