实体和 Table 注释。了解它们之间的确切区别
Entity and Table annotations. Understanding the exact differences between them
我正在学习休眠,对 Entity 和 Table 之间的区别以及它们的工作方式有一些疑问 together/independently?
案例一:
@Entity
public class Person{
}
My understanding -
Entity name - Person
Table name in db - person
案例二:
@Entity(name = "people")
public class Person{
}
My understanding -
Entity name - people
Table name in db - people
案例三:
@Entity
@Table(name="people")
public class Person{
}
My understanding -
Entity name - Person
Table name in db - people
案例四:
@Entity(name = "person")
@Table(name = "people")
public class Person{
}
My understanding -
Entity name - person
Table name in db - people
案例五:
@Table(name="people")
public class Person{
}
My understanding -
Entity name - ??
Table name in db - people
我对这五个案例的理解正确吗?关于 Entity 和 Table 的工作还有什么我应该知道的吗?
@Entity
用于声明一个class可以被Hibernate管理。它还通过其 name
属性定义实体名称,这是我们在编写 JPQL/HQL 查询时引用的名称。如果未指定实体名称,则默认为该实体的非限定名称 class.
例如:
@Entity(name="People")
public class Person{
}
然后我需要在编写JPQL/HQL查询时使用People
来引用这个实体:
select p from People p;
@Table
定义 @Entity
通过其名称属性映射到的实际数据库 table 名称。如果未指定,其默认值将等于实体名称(即 @Entity
的 name
属性)
此外,@Table
只有在定义了 @Entity
时才有意义。否则,仅定义 @Table
而不定义 @Entity
(即情况 5)没有任何效果。
总结如下:
案例一:
@Entity
public class Person {
}
Entity name = Person
DB Table name = Person
案例二:
@Entity(name = "people")
public class Person {
}
Entity name = people
DB Table name = people
案例三:
@Entity
@Table(name="people")
public class Person{
}
Entity name = Person
DB Table name = people
案例四:
@Entity(name = "person")
@Table(name = "people")
public class Person{
}
Entity name = person
DB Table name = people
案例 5:无效
我正在学习休眠,对 Entity 和 Table 之间的区别以及它们的工作方式有一些疑问 together/independently?
案例一:
@Entity
public class Person{
}
My understanding -
Entity name - Person
Table name in db - person
案例二:
@Entity(name = "people")
public class Person{
}
My understanding -
Entity name - people
Table name in db - people
案例三:
@Entity
@Table(name="people")
public class Person{
}
My understanding -
Entity name - Person
Table name in db - people
案例四:
@Entity(name = "person")
@Table(name = "people")
public class Person{
}
My understanding -
Entity name - person
Table name in db - people
案例五:
@Table(name="people")
public class Person{
}
My understanding -
Entity name - ??
Table name in db - people
我对这五个案例的理解正确吗?关于 Entity 和 Table 的工作还有什么我应该知道的吗?
@Entity
用于声明一个class可以被Hibernate管理。它还通过其 name
属性定义实体名称,这是我们在编写 JPQL/HQL 查询时引用的名称。如果未指定实体名称,则默认为该实体的非限定名称 class.
例如:
@Entity(name="People")
public class Person{
}
然后我需要在编写JPQL/HQL查询时使用People
来引用这个实体:
select p from People p;
@Table
定义 @Entity
通过其名称属性映射到的实际数据库 table 名称。如果未指定,其默认值将等于实体名称(即 @Entity
的 name
属性)
此外,@Table
只有在定义了 @Entity
时才有意义。否则,仅定义 @Table
而不定义 @Entity
(即情况 5)没有任何效果。
总结如下:
案例一:
@Entity
public class Person {
}
Entity name = Person
DB Table name = Person
案例二:
@Entity(name = "people")
public class Person {
}
Entity name = people
DB Table name = people
案例三:
@Entity
@Table(name="people")
public class Person{
}
Entity name = Person
DB Table name = people
案例四:
@Entity(name = "person")
@Table(name = "people")
public class Person{
}
Entity name = person
DB Table name = people
案例 5:无效