Estoy escribiendo una aplicación que sincroniza las entidades de un origen de datos de terceros en nuestro propio esquema, con un paso de transformación/mapeo en el medio. Estoy usando Hibernate para representar y persistir las entidades en nuestro propio esquema. Un problema con el que me estoy encontrando es que tengo una clave única de varias columnas en una de mis tablas. El comportamiento que me gustaría ver es análogo a un upsert: cuando Hibernate va a persistir en una entidad y detecta una violación de restricción única, en su lugar realiza una actualización. Estamos utilizando MySQL, que proporciona una sintaxis de INSERTAR ... EN DUPLICADO DE ACTUALIZACIÓN DE LLAVE, pero no estoy seguro de cómo o si se puede hacer que Hibernate la use.¿Cómo imitar el comportamiento de inserción utilizando Hibernate?
Supongo que siempre puedo probar el inserto, y si encuentro una excepción, hago una actualización, pero eso me parece raro y no es óptimo. ¿Algún consejo sobre una forma limpia de hacer esto?
Si los partidos selectos ninguna fila, no hay filas serán bloqueadas por "actualización". La condición de carrera no se evita. –