JPA - 如果没有为实体指定@Table怎么办?

Gau*_*tel 1 java hibernate jpa hibernate-mapping

我提到了@Table 文档,并指出:

如果没有为实体类指定表注释,则应用默认值.

我的问题是什么是默认值?

Jen*_*ens 6

默认表名是entityclass的非限定类名,默认模式名是数据库连接中的连接模式.


cнŝ*_*ŝdk 5

如果您指定@Entity但未指定@Table,您的类将被映射,并且在数据库中您将获得类名作为表的名称。

从文档中将POJO 标记为持久实体部分:

@Table是在类级别设置的;它允许您为实体映射定义表、目录和模式名称。如果没有定义@Table,则使用默认值:实体的非限定类名

例如,如果您有:

@Entity
public class MyTest{ ...
Run Code Online (Sandbox Code Playgroud)

您的表将my_test在您的数据库中具有该名称。请注意,PascalCase 将转换为 pascal_case。请注意这一点。

  • +1 指出 Hibernate 文档的正确部分。我引用的 JPA 文档含糊不清,让人们猜测.. (2认同)