Подтвердить что ты не робот

Атрибут name в @Entity и @Table

У меня есть сомнение, что атрибут name присутствует в обоих

@Entity и @Table

например, мне разрешено иметь такое же значение для атрибута name

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

и у меня могут быть разные имена для одного класса

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

может кто-нибудь сказать мне, в чем разница между этими двумя и почему у нас есть один и тот же атрибут в обоих?

4b9b3361

Ответ 1

@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

Итак, в первом случае ваша таблица и сущность будут иметь одно и то же имя, что позволит вам получить доступ к вашей таблице с тем же именем, что и сущность при написании HQL или JPQL.

А во втором случае при написании запросов вы должны использовать имя, указанное в @Entity, а имя, указанное в @Table, будет использоваться для именования таблицы в БД.

Таким образом, в HQL ваш someThing будет ссылаться на otherThing в БД.

Ответ 2

@Entity(name = "someThing") = > это имя будет использоваться для идентификации домена.. это имя будет идентифицироваться только hql запросами..и.. имя объекта домена

@Table(name = "someThing") = > это имя будет использоваться для того, что таблица ссылается на объект домена..ie.. имя таблицы

Ответ 3

@Entity полезен для классов моделей, чтобы обозначить, что это сущность или таблица

@Table используется для указания любого конкретного имени вашей таблицы, если вы хотите указать любое другое имя

Примечание: если вы не используете @Table, тогда hibernate считает, что @Entity - это имя вашей таблицы по умолчанию, а @Entity must

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

}

Ответ 4

атрибут name @Table является фактическим именем таблицы. Имя @Entitiy полезно, если у вас есть два класса @Entity с тем же именем, и вам нужен способ их дифференциации при выполнении запросов.