2016-04-08 29 views
0

Bir tablo aşağıdaki gibi tanımladık,Güncelleme UniqueConstrains

@Entity 
@Table(
     uniqueConstraints = {@UniqueConstraint(columnNames = {"reward_id", "transaction_id", "sku"})} 
) 
public class ShipmentItem extends Model { 
    ... 
} 

güncellenen kod derler ama JPA, tablo şemasını değiştirmez. Kullanmam gereken bir yapılandırma ayarı var mı?

JPA bunu yapamazsa, bu soruna sistematik yaklaşım nedir? Göç yazabilirim, ancak JPA otomatik olarak kısıtlamanın adını üretir, bu yüzden eski kısıtlamayı nasıl bırakacağınız belli değildir.

Önemli olup olmadığından emin değilim, ancak hazırda bekletme ve mysql kullanıyorum.

+1

JPA'ya, sizin için tabloları oluşturmaya güvenemediniz ve tüm değişiklikleri kendiniz yapacağınız [flyway] (https://flywaydb.org/) gibi bir çözüm kullanamazsınız. – hakamairi

+0

Blazej ile aynı fikirdeyim. Buna ek olarak, PostgreSQL gibi bir veritabanı kullanıyorsanız, kısıtlamaları güncellemenize izin veren kısıtlama DEFERRABLE'ı yaratabilirsiniz, ancak DB, işlemin sonuna kadar referans kontrolü gerçekleştirmeyecektir. – sagneta

cevap

0

Eğer Hibernate kullandığınıza göre, orada otomatik şema güncellemek için bir özelliktir: değerle güncelleştirme

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html

hibernate.hbm2ddl.auto (Ama değil unutmayın Üretim için kullanılması önerilir)

+0

İlginçtir ki, 'hibernate.hbm2ddl.auto' hem geliştirme hem de üretim için 'güncellemeye' ayarlanmış ve hala kısıtlamayı güncellemedim. –