弹簧引导JPA中使用@ entity和@ table的实现

  

本文中我们会讲解如何在春天引导JPA中实现类和数据表格的映射。

  


  

  

弹簧引导JPA底层是用Hibernate实现的,默认情况下,数据库表格的名字是相应的类名字的首字母大写。命名的定义是通过接口ImplicitNamingStrategy来定义的:

     /* *   *确定隐含的一个实体的主要的表的名称。   *   * @param源信息来源   *   * @return隐含的表名。   */公共标识determinePrimaryTableName (ImplicitEntityNameSource源);   之前      

我们看下它的实现ImplicitNamingStrategyJpaCompliantImpl:

        @Override   公共标识determinePrimaryTableName (ImplicitEntityNameSource源){   如果(源==null) {//不应该发生,但防守……   把新的HibernateException(“实体命名没有提供信息”。);   }      字符串表=transformEntityName (source.getEntityNaming ());      如果(表名==null) {//todo:添加信息的错误消息,但是如何知道写什么因为我们未能解释命名来源   把新的HibernateException(“无法确定主要表名实体”);   }      返回toIdentifier(表名,source.getBuildingContext ());   }      之前      

如果我们需要修改系统的默认实现,则可以实现接口PhysicalNamingStrategy:

        公共接口PhysicalNamingStrategy {   公共标识toPhysicalCatalogName(标识符名称、JdbcEnvironment JdbcEnvironment);      公共标识toPhysicalSchemaName(标识符名称、JdbcEnvironment JdbcEnvironment);      公共标识toPhysicalTableName(标识符名称、JdbcEnvironment JdbcEnvironment);      公共标识toPhysicalSequenceName(标识符名称、JdbcEnvironment JdbcEnvironment);      公共标识toPhysicalColumnName(标识符名称、JdbcEnvironment JdbcEnvironment);   }      之前      


  

  

我们可以在@ entity中使用@ table来自定义映射的表格名字:

        @ entity   @ table (name="文章")   公共类文章{//?   }   之前      

当然,我们可以将整个名字写在静态变量中:

        @ entity   @ table (name=Article.TABLE_NAME)   公共类文章{   公共静态最终字符串TABLE_NAME=拔恼隆?//?   }   之前      


  

  

通常我们在@Query中使用JPQL时可以这样用:

        @Query (“select * from文章”)   之前      

其文章中默认是实体类的类名称,我们也可以这样来修改它:

        @ entity (name=" MyArticle ")   之前      

这时候我们可以这样定义JPQL:

        @Query (“select * from MyArticle”)      

到此这篇关于弹簧引导JPA中使用@ entity和@ table的实现的文章就介绍到这了,更多相关弹簧引导JPA使用@ entity和@ table内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

弹簧引导JPA中使用@ entity和@ table的实现