1. 简介
在本篇简短教程中,我们将学习如何使用 JPA 设置 SQL 表名。
我们会介绍 JPA 是如何生成默认表名的,以及如何自定义表名。
2. 默认表名生成规则
JPA 的默认表名生成机制与其具体实现相关。
以 Hibernate 为例,默认表名是实体类名,且首字母大写。这个名称是通过 ImplicitNamingStrategy
接口定义的。
我们也可以通过实现 PhysicalNamingStrategy
接口来改变这种默认行为(例如统一加前缀、转为小写等)。✅
3. 使用 @Table
注解设置自定义表名
最简单直接的方式,是使用 @jakarta.persistence.Table
注解来指定表名:
@Entity
@Table(name = "ARTICLES")
public class Article {
// ...
}
我们也可以将表名定义为静态常量,提高可维护性:
@Entity
@Table(name = Article.TABLE_NAME)
public class Article {
public static final String TABLE_NAME = "ARTICLES";
// ...
}
这种方式在需要统一管理多个实体表名时非常实用。✅
4. 在 JPQL 查询中覆盖默认类名
默认情况下,JPQL 查询语句中使用的实体名称是类名:
select * from Article
我们可以通过 @Entity
注解的 name
属性来修改这个名称:
@Entity(name = "MyArticle")
public class Article {
// ...
}
此时 JPQL 查询语句应改为:
select * from MyArticle
⚠️注意:这种方式不会影响数据库中实际表名,仅用于 JPQL 查询中。❌
5. 总结
在本文中,我们了解了 JPA 如何生成默认表名,以及如何通过 @Table
注解和 @Entity(name = "...")
来自定义表名和 JPQL 别名。
所有示例代码都可以在 GitHub 仓库 中找到。✅