2016-04-01 28 views
3

Oracle DB ve Spring Data kullanırken hata alıyorum. hatadır: Bu hatanınYay verisindeki varlığa şema adı ekleme?

ORA-00942: table or view does not exist 

çünkü ben ile bağlanırken kullanıcı değil Ben bağlanmak isteyen şemalarında tablolara erişebilir yapmasıdır.

Bunu, veritabanımda synonyms oluşturmak veya her bir varlık/tablonun ait olduğu schema belirtmek için 2 düzeltmenin olduğunu okudum.

İlk önce Schema yaklaşımını deneyeceğim. Bunu nasıl yaparım? Aşağıda

Benim örnek varlık, bir Vet Şemanıza Köpek: Sen şema adıyla tabloları öneki gerekir

@Entity 
@Table(name = "Dog") 
public class Dog 
{ 
    @Id 
    private String id; 

    @Column(name = "NAME") 
    private String name; 

    @Column(name = "Owner") 
    private String owner; 

    //getters and setters etc... 

cevap

5

@Table ek açıklaması, schema özniteliğini sağlar:

@Table(name = "Dog", schema = "Vet") 
+0

Bu, yukarıdaki diğer yanıtla aynı mı, SCHEMA.Table yöntemi mi? Hangisi tercih edilir? – java123999

+0

@ java123999 Sonuç aynı olup olmadığından emin değil. Ama bu, doktorların söylediği şey. [Java Doc tablosu] (http://docs.oracle.com/javaee/7/api/javax/persistence/Table.html). Projelerimde bunu böyle kullandım. – Patrick

+0

Teşekkürler, ayrıca şemaları bir özellik dosyasında tüm girişler için bir kez belirtmek de mümkündür. E.g: hibernate.vets.default_schema = VET? – java123999

2

ve onlara inbetween .:

@Table(name = "VET.Dog") 
+0

Tamam, teşekkürler, neden bu durumda? – java123999

+0

Çünkü bu, Oracle'daki belirli bir şemadaki tablolara başvurma şeklinizdir. –

+0

bu tercih edilirken @Table (name = "Dog", schema = "Vet") yolu üzerinde tercih edilir mi? – java123999

İlgili konular