2016-04-01 11 views
3

Ich erhalte einen Fehler bei der Verwendung eines Oracle DB und Spring Data. Der Fehler ist:Hinzufügen des Schemennamens zu Entitäten in Spring-Daten?

ORA-00942: table or view does not exist 

Die Ursache für diesen Fehler ist, dass der Benutzer ich mit anschließe nicht hat Zugriff auf die Tabellen in den Schemata I eine Verbindung herstellen möchten.

Ich habe gelesen, dass 2 Fixes dazu sind, synonyms in meiner Datenbank zu erstellen oder die schema anzugeben, zu der jede Entität/Tabelle gehört.

Ich werde zuerst den Schema-Ansatz versuchen. Wie mache ich das?

Mein Beispiel Einheit unten, ein Hund im Vet Schema:

@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... 

Antwort

5

Die @Table Annotation liefert das schema Attribut:

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

Ist das die gleiche wie die andere Antwort oben, die SCHEMA.Table-Methode? Welche wäre vorzuziehen? – java123999

+0

@ java123999 Nicht sicher, ob das Ergebnis gleich ist. Aber das ist was die Ärzte sagen. [Java Doc-Tabelle] (http://docs.oracle.com/javaee/7/api/javax/persistence/Table.html). In meinen Projekten habe ich es so benutzt. – Patrick

+0

Danke, ist es auch möglich, das Schema einmal in einer Eigenschaftendatei für alle enites anzugeben. Zum Beispiel: hibernate.vets.default_schema = VET? – java123999

2

Sie müssen Ihre Tabellen mit dem Schemanamen und mit einem . dazwischen ihnen Präfix:

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

Ok danke, warum ist das der Fall? – java123999

+0

Weil Sie auf diese Weise Tabellen in einem bestimmten Schema in Oracle referenzieren. –

+0

ist dies vorzuziehen über die @Table (Name = "Hund", Schema = "Vet") Weg, dies zu tun? – java123999

Verwandte Themen