atributo name en @Entity y @Table


Tengo una duda atributo nombre está allí en ambos

@ Entidad y @ Tabla

Por ejemplo, se me permite tener el mismo valor para el atributo name

@Entity(name = "someThing")
@Table(name = "someThing")

Y también puedo tener diferentes nombres para la misma clase

 @Entity(name = "someThing")
 @Table(name = "otherThing")

¿Puede alguien decirme cuál es la diferencia entre estos dos y por qué tenemos el mismo atributo en ambos ?

Author: ankit, 2013-09-11

4 answers

@Entity(name = "someThing") => this name will be used to name Entity
@Table(name = "someThing")  => this name will be used to name a table in DB

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

Así que en HQL su Algo {[7] } se referirá a otherThing {[7] } en DB

 47
Author: ankit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-11 04:32:37

@Entity(name = "someThing") => este nombre se utilizará para identificar el dominio ..este nombre solo será identificado por hql consultas ie ie name nombre del objeto de dominio

@Table(name = "someThing") => este nombre se utilizará a qué tabla se refiere el dominio object..ie name nombre del cuadro

 11
Author: Manbumihu Manavan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-18 03:41:09

@Entity es útil con las clases modelo para denotar que esta es la entidad o tabla

@Table se utiliza para proporcionar cualquier nombre específico a su tabla si desea proporcionar cualquier nombre diferente

Nota: si no usas @Table entonces hibernate considera que @Entity es el nombre de tu tabla por defecto y @Entity debe

@Entity    
@Table(name = "emp")     
public class Employee implements java.io.Serializable    
{

}
 6
Author: Bhuwan Tripathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-15 05:49:49

El atributo@Table name es el nombre real de la tabla. El nombre de @Entitiy es útil si tiene dos clases @Entity con el mismo nombre y necesita una forma de diferenciarlas al ejecutar consultas.

 0
Author: Soumyaansh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-05 08:27:24