2017-01-24 9 views
5

Usługa, którą buduję, otrzymuje dane z zewnętrznego systemu, które pochodzą z "zewnętrznego identyfikatora" dostawcy. Kiedy zapisać te dane w naszej bazie danych, to przypisać automatycznie wygenerowany identyfikator do niego zbyt:Czy istnieje funkcja JPA do scalania na podstawie pól bez identyfikatora?

@Entity 
public class Content { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private Long externalId; 

// many other fields 
} 

Gdy system zewnętrzny wysyła ponownie dane dla tej samej treści (z tym samym ID zewnętrznego), to rozszeregować do jednorodzinnego POJO Treść:

Content c = deserialize(json); 

Czy istnieje coś takiego jak EntityManager.merge które można załadować i zaktualizować odpowiedni wiersz z bazy danych przy użyciu pola externalId zamiast pola id?

+0

Nie sądzę, że istnieje. Będziesz musiał sprawdzić swój podmiot prawdopodobnie za pomocą createQuery; które mogą narzucić indeksowanie na externalId. Niemniej jednak interesujące pytanie IMO – Eugene

Odpowiedz

0

Prawie, ale jeśli klient zewnętrzny nie zna Twojego identyfikatora, musisz użyć zapytania, aby uzyskać encję (w rzeczywistości potrzebujesz tylko identyfikatora jednostki). Gdy masz identyfikator, możesz ustawić go na oddzielonym obiekcie i wykonać scalenie.

Mam nadzieję, że to pomoże.

Powiązane problemy