web-dev-qa-db-fra.com

attribut name dans @Entity et @Table

J'ai un attribut de nom de doute est là dans les deux

@Entity et @Table

par exemple, je suis autorisé à avoir la même valeur pour l'attribut name

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

et je peux avoir des noms différents aussi bien pour la même classe

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

quelqu'un peut-il me dire quelle est la différence entre ces deux et pourquoi nous avons le même attribut dans les deux?

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

Ainsi, dans le premier cas, votre table et votre entité auront le même nom, ce qui vous permettra d'accéder à votre table avec le même nom que l'entité lors de l'écriture de HQL ou de JPQL.

Et dans le second cas, lors de l'écriture des requêtes, vous devez utiliser le nom indiqué dans @ Entity et le nom indiqué dans @ Table sera utilisé pour nommer la table dans la base de données.

Ainsi, dans HQL, votre someThing fera référence à otherThing dans la base de données.

71
ankit

@Entity(name = "someThing") => ce nom sera utilisé pour identifier le domaine .. ce nom ne sera identifié que par hql requêtes ..ie ..nom de l'objet de domaine

@Table(name = "someThing") => ce nom sera utilisé dans quelle table référencée par l'objet de domaine..ie ..nom de la table

15
Manbumihu Manavan

@Entity est utile avec les classes de modèle pour indiquer qu'il s'agit de l'entité ou de la table

@Table est utilisé pour donner un nom spécifique à votre table si vous voulez donner un autre nom

Remarque: si vous n'utilisez pas @Table alors hiberner considérons que @Entity est le nom de votre table par défaut et @Entity doit

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

}
9
Bhuwan Tripathi

L'attribut @ nom de la table est le nom réel de la table. Le nom de @Entitiy est utile si vous avez deux classes @Entity portant le même nom et que vous avez besoin d'un moyen de les différencier lors de l'exécution de requêtes.

0
Coral