2010-06-11 11 views
7

Bir Oracle 11g veritabanına kalıcı varlıklar için Hazırda Bekletme (ek açıklamalara dayalı) kullanan bir Java web uygulaması geliştiriyorum. DBA, tablolar için eş anlamlılar oluşturdu ve bu tabloları fiziksel tablolar yerine kullanmamı istedi. (Örneğin: "Foo" tablonun "S_Foo" eşanlamlısı var)Hibernate Schema Doğrulama, Oracle Tablosu üzerinde Eş Anlamlılar

"hibernate.hbm2ddl.auto = validate" etkinleştirilmişse, uygulama "Eksik Tablo: S_Foo" ile başlangıçta başarısız oluyor. Doğrulamayı kapatırsam, uygulama iyi çalışır ve düzgün çalışır. Benim tahminim Hibernate'in bir tablo varlığını doğrularken sadece fiziksel tablolara karşı olduğunu ve eş anlamlı olmadığını kontrol etmesidir.

Hibernate şema doğrulamasını eş anlamlılarla etkinleştirmenin bir yolu var mı? Ek açıklamada hem fiziksel bir tablo hem de eş anlamlı belirtebilir miyim? Uygulama başladığında tablo yapısının doğru olduğunu kontrol etmeyi tercih ederim.

+0

Tam yığın izlemeyi yükleyebilir ve ayrıca Hibernate, jdbc sürücüsü ve lehçe sürümlerini de anlatabilir misiniz? –

+0

PUBLIC eş anlamlıları veya Hibernate'in kullanıcı olarak kaydettiği kullanıcının sahip olduğu eşanlamlılar olarak oluşturulan eş anlamlılar mı? Bu sonucu etkileyebilir. (ya da olmayabilir) –

cevap

0

Hazırda bekletmeye alışkın değilim, ancak eş anlamlılar yerine görünümleri deneyebilir misiniz? Bu tabloları yalnızca görünümler için kullanıyorsanız, eşanlamlı olarak aynı şekilde çalışır. CRUD'yi "tablo" üzerinde yapmak istiyorsanız, bunun yerine bir grup tetikleyici oluşturmanız gerekir.

1

hibernate.hbm2ddl.auto=validate için hibernate.hbm2ddl.auto değerini değiştirin = "" sonra başarısız olmaz.