时间:2021-05-20
本文中我们会讲解如何在Spring Boot JPA中实现class和数据表格的映射。
默认实现
Spring Boot JPA底层是用Hibernate实现的,默认情况下,数据库表格的名字是相应的class名字的首字母大写。命名的定义是通过接口ImplicitNamingStrategy来定义的:
/** * Determine the implicit name of an entity's primary table. * * @param source The source information * * @return The implicit table name. */ public Identifier determinePrimaryTableName(ImplicitEntityNameSource source);我们看下它的实现ImplicitNamingStrategyJpaCompliantImpl:
@Override public Identifier determinePrimaryTableName(ImplicitEntityNameSource source) { if ( source == null ) { // should never happen, but to be defensive... throw new HibernateException( "Entity naming information was not provided." ); } String tableName = transformEntityName( source.getEntityNaming() ); if ( tableName == null ) { // todo : add info to error message - but how to know what to write since we failed to interpret the naming source throw new HibernateException( "Could not determine primary table name for entity" ); } return toIdentifier( tableName, source.getBuildingContext() ); }如果我们需要修改系统的默认实现,则可以实现接口PhysicalNamingStrategy:
public interface PhysicalNamingStrategy { public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment);}使用@Table自定义表格名字
我们可以在@Entity中使用@Table来自定义映射的表格名字:
@Entity@Table(name = "ARTICLES")public class Article { // ...}当然,我们可以将整个名字写在静态变量中:
@Entity@Table(name = Article.TABLE_NAME)public class Article { public static final String TABLE_NAME= "ARTICLES"; // ...}在JPQL Queries中重写表格名字
通常我们在@Query中使用JPQL时可以这样用:
@Query(“select * from Article”)其中Article默认是Entity类的Class名称,我们也可以这样来修改它:
@Entity(name = "MyArticle")这时候我们可以这样定义JPQL:
@Query(“select * from MyArticle”)到此这篇关于Spring Boot JPA中使用@Entity和@Table的实现的文章就介绍到这了,更多相关Spring Boot JPA使用@Entity和@Table内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近在鼓捣spring-boot,真好用,学习到jpa.通过生成Entity文件,能够快速的生成数据库,并且使用JpaRepository的基本增删查改方法,好
jpa解决懒加载异常在我上一遍文章上进行行修改,SpringBoot2实现JPA分页和排序分页实体类上改:@Entity@Table(name="employe
Spring框架就像一个家族,有众多衍生产品例如boot、security、jpa等等。但他们的基础都是Spring的ioc和aopioc提供了依赖注入的容器a
什么是JPA一种规范,并非ORM框架,也就是ORM上统一的规范spring-boot-starter-data-jpa是SpringBoot的项目,包含了spr
Springboot内部提供的事务管理器是根据autoconfigure来进行决定的。比如当使用jpa的时候,也就是pom中加入了spring-boot-sta