Ich habe Zweifel, weil das Namensattribut sowohl in @Entity als auch in @Table vorhanden ist
Zum Beispiel darf ich den gleichen Wert für das Namensattribut haben
@Entity(name = "someThing")
@Table(name = "someThing")
und ich kann auch verschiedene Namen für dieselbe Klasse haben
@Entity(name = "someThing")
@Table(name = "otherThing")
Kann mir jemand sagen, was der Unterschied zwischen diesen beiden ist und warum wir in beiden das gleiche Attribut haben?
java
hibernate
jpa
annotations
persistence
Timotej Leginus
quelle
quelle
Antworten:
Im ersten Fall haben Ihre Tabelle und Ihre Entität denselben Namen, sodass Sie beim Schreiben von HQL oder JPQL auf Ihre Tabelle mit demselben Namen wie die Entität zugreifen können.
Und im zweiten Fall müssen Sie beim Schreiben von Abfragen den in @Entity angegebenen Namen verwenden, und der in @Table angegebene Name wird verwendet, um die Tabelle in der Datenbank zu benennen.
In HQL verweist Ihr someThing also auf otherThing in der DB.
quelle
@Entity(name = "someThing")
=> Dieser Name wird verwendet, um die Domäne zu identifizieren. Dieser Name wird nur durchhql
Abfragen identifiziert. dh .. Name des Domänenobjekts@Table(name = "someThing")
=> Dieser Name wird verwendet, auf welche Tabelle sich das Domänenobjekt bezieht..ie ..name der Tabellequelle
@Entity
ist nützlich bei Modellklassen, um anzuzeigen, dass dies die Entität oder Tabelle ist@Table
wird verwendet, um Ihrer Tabelle einen bestimmten Namen zu geben, wenn Sie einen anderen Namen angeben möchtenHinweis: Wenn Sie den
@Table
Ruhezustand nicht verwenden, berücksichtigen Sie, dass dies@Entity
standardmäßig Ihr Tabellenname ist und@Entity
muss@Entity @Table(name = "emp") public class Employee implements java.io.Serializable { }
quelle
Das Namensattribut von @ Table ist der tatsächliche Tabellenname. Der Name von @ Entitiy ist nützlich, wenn Sie zwei @ Entity-Klassen mit demselben Namen haben und eine Möglichkeit benötigen, diese beim Ausführen von Abfragen zu unterscheiden.
quelle