Tengo una duda, porque el atributo de nombre está allí tanto en @Entity como en @Table
Por ejemplo, puedo tener el mismo valor para el atributo de nombre
@Entity(name = "someThing")
@Table(name = "someThing")
y puedo tener diferentes nombres también para la misma clase
@Entity(name = "someThing")
@Table(name = "otherThing")
¿Alguien puede decirme cuál es la diferencia entre estos dos y por qué tenemos el mismo atributo en ambos?
java
hibernate
jpa
annotations
persistence
Timotej Leginus
fuente
fuente
Respuestas:
Entonces, en el primer caso, su tabla y entidad tendrán el mismo nombre, lo que le permitirá acceder a su tabla con el mismo nombre que la entidad mientras escribe HQL o JPQL.
Y en el segundo caso, al escribir consultas, debe usar el nombre dado en @Entity y el nombre dado en @Table se usará para nombrar la tabla en la base de datos.
Entonces, en HQL, su algo se referirá a otro en la base de datos.
fuente
@Entity(name = "someThing")
=> este nombre se utilizará para identificar el dominio .. este nombre solo se identificará mediantehql
consultas .. es decir .. nombre del objeto de dominio@Table(name = "someThing")
=> este nombre se utilizará a qué tabla se refiere el objeto de dominio .. es decir .. nombre de la tablafuente
@Entity
es útil con clases modelo para indicar que esta es la entidad o tabla@Table
se utiliza para proporcionar un nombre específico a su tabla si desea proporcionar un nombre diferenteNota: si no lo usa
@Table
, hibernar considere que@Entity
es el nombre de su tabla por defecto y@Entity
debe@Entity @Table(name = "emp") public class Employee implements java.io.Serializable { }
fuente
El atributo de nombre de @ Table es el nombre real de la tabla. El nombre de @Entity es útil si tiene dos clases de @Entity con el mismo nombre y necesita una forma de diferenciarlas al ejecutar consultas.
fuente