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
?
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