Я таблица определяется следующим образом:Обновление UniqueConstrains на столе JPA
@Entity
@Table(
uniqueConstraints = {@UniqueConstraint(columnNames = {"reward_id", "transaction_id"})}
)
public class ShipmentItem extends Model {
...
}
Я хочу, чтобы изменить ограничение уникальности, чтобы сделать его более расслабленным:
@Entity
@Table(
uniqueConstraints = {@UniqueConstraint(columnNames = {"reward_id", "transaction_id", "sku"})}
)
public class ShipmentItem extends Model {
...
}
Обновленный код компилируется, но JPA не меняет схему таблицы. Есть ли настройка, которую мне нужно использовать?
Если JPA не может этого сделать, каков системный подход к этой проблеме? Я могу написать миграцию, однако JPA автоматически генерирует имя для ограничения, поэтому неясно, как отказаться от старого ограничения.
Не уверен, если это имеет значение, но я использую hibernate и mysql.
Вы не можете полагаться на JPA, создающую таблицы для вас, и использовать такое решение, как [flyway] (https://flywaydb.org/), где вы внесете все изменения самостоятельно. – hakamairi
Я согласен с Blazej. Кроме того, если вы используете базу данных, такую как PostgreSQL, вы можете создать ограничение DEFERRABLE, которое решит разрешить вам обновление ограничений, но БД не будет выполнять ссылочную проверку до конца транзакции. – sagneta