Я сомневаюсь, потому что атрибут name присутствует как в @Entity, так и в @Table
Например, мне разрешено иметь такое же значение для атрибута name
@Entity(name = "someThing")
@Table(name = "someThing")
и у меня могут быть разные имена для одного и того же класса
@Entity(name = "someThing")
@Table(name = "otherThing")
Может ли кто-нибудь сказать мне, в чем разница между этими двумя и почему у нас одинаковый атрибут в обоих?
java
hibernate
jpa
annotations
persistence
Тимотей Легинус
источник
источник
Ответы:
Итак, в первом случае ваша таблица и объект будут иметь одно и то же имя, что позволит вам получить доступ к вашей таблице с тем же именем, что и объект, при написании HQL или JPQL.
А во втором случае при написании запросов вы должны использовать имя, указанное в @Entity, а имя, указанное в @Table, будет использоваться для имени таблицы в БД.
Итак, в HQL ваш someThing будет ссылаться на otherThing в БД.
источник
@Entity(name = "someThing")
=> это имя будет использоваться для идентификации домена .. это имя будет определяться толькоhql
запросами .. т.е. .. имя объекта домена@Table(name = "someThing")
=> это имя будет использоваться к какой таблице ссылается объект домена .. т.е. имя таблицыисточник
@Entity
полезно с классами модели, чтобы обозначить, что это объект или таблица@Table
используется для предоставления любого конкретного имени вашей таблице, если вы хотите указать любое другое имяПримечание: если вы не используете
@Table
спящий режим, считайте, что@Entity
это имя вашей таблицы по умолчанию и@Entity
должно@Entity @Table(name = "emp") public class Employee implements java.io.Serializable { }
источник
Атрибут имени @ таблицы - это фактическое имя таблицы. Имя @ Entitiy полезно, если у вас есть два класса @Entity с одинаковым именем и вам нужен способ различать их при выполнении запросов.
источник