2016-03-28 20 views
0

ü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?

cevap

1

Sen yanlış mülk _hibernate.validator.apply_to_ddl_ ayarlayarak DDL için Bean Doğrulama kısıtlamalarının uygulamasını devre dışı bırakabilir.

İlgili konular