üzerinde Doğrulama ek açıklamaları tanımak için Hazırda Bekleme'yi kısıtlama Veritabanları için şimdiye kadar hbm2ddl=update
kullanıyorum. Ama şimdi, hbm2ddl
özelliğini kaldıracağız ve Hazırda Bekletilen Model sınıflarına dayalı olarak sql ifadesi oluşturmak için Hazırda bekletme aracının SchemaExport
aracını kullanacağız. SchemaExport şu anda da tamamlandı. Ben hazırda veritabanı oluşturulur ve SchemeExport iki veritabanlarında mysqldiff
aracını kullanarak şema sql aynı oluşturulan emin olduğumdaDDL nesli
Ama kısıtların aynı tür yok birkaç sütun bulunmaktadır (uyku modu & SchemaExport oluşturulan oluşturulan) .
Varsayalım hazırda Tablo sütun kısıtlamaları aşağıdaki oluşturulmuş özel aşağıdaki Model
public class User {
@Id
// some generation strategy
private int id;
@Column(name = "first_name")
@NotNull
private String firstName;
@Column(name = "someField", length = 50)
@Size(min = 3, max = 20)
private String someField;
}
alır.
`first_name` varchar(255) NOT NULL,
`someField` varchar(20) DEFAULT NULL
ŞemaExport tarafından oluşturulan Şema aşağıdaki yapıları içerir.
`first_name` varchar(255) DEFAULT NULL,
`someField` varchar(50) DEFAULT NULL
yüzden SchemaExport hesabı (right
) içine sadece Veritabanı ilgili ek açıklama alırken hazırda nesil veritabanı ddl nesil (wrong
) esnasında dikkate ayrıca fasulye doğrulama alır bu çok bariz. Ben max = {x}
kullanarak sütunları değerini kısıtlayan ancak length = >max
tanımlayan biliyorum
(aynı @NotNull
& nullable = true -> default
için de geçerli) oldukça işe yaramaz, ama benim açımdan Doğrulama ek açıklamaları yalnızca Doğrulamalar için kullanılmalıdır ve Veritabanı releated açıklama sadece ddl nesil için kullanılmalıdır olduğunu sağ..? Hazırda bekletme notlarını ddl nesli sırasında hesaba katmamak için hazırda bekletmenin herhangi bir yolu var mı ..?
Ben Benzer tür soru ama tam tersi ihtiyacı olan
Hibernate 4.2.7
Spring 4.1.4 (Java based Bean configs, no hibernate.cfg.xml)
kütüphanelerin aşağıdaki sürümünü kullanıyorum. Ddl nesnesinin bunu neden tanıdığına değil SchemaExport aracına ya da tersine en uygun olana uygun/açık bir cevap bulamıyorum.
Why does Hibernate Tools hbm2ddl generation not take into account Bean Validation annotations?