Sto scrivendo un'applicazione che sincronizza le entità da un'origine dati di terze parti nel nostro schema, con una fase di trasformazione/mappatura intermedia. Sto usando Hibernate per rappresentare e persistere le entità nel nostro schema. Un problema che sto incontrando è che ho una chiave multi-colonna unica su uno dei miei tavoli. Il comportamento che vorrei vedere è analogo a un upsert: quando Hibernate va a persistere un'entità e rileva una violazione di un vincolo univoco, fa invece un aggiornamento. Stiamo usando MySQL, che fornisce una sintassi INSERT ... ON DUPLICATE KEY UPDATE, ma non sono sicuro di come o se Hibernate possa essere fatto per usarlo?Come imitare il comportamento di upsert usando Hibernate?
Suppongo che potrei sempre provare l'inserto e, se rilevo un'eccezione, faccio un aggiornamento, ma ciò sembra intrusivo e non ottimale. Qualche consiglio su un modo pulito per farlo?
Se le partite selezionare nessuna riga, nessuna riga verranno bloccati da "per l'aggiornamento". La condizione della gara non è stata evitata. –