版权提醒
本系列文章为原创内容。转载请注明文章来源。

前言

本文为搭建 SSSP 框架极简书店教程系列的其中一篇。本文主要内容:使用 IDEA 根据已有数据库创建对应 JPA 实体类。

本教程使用的数据库为 H2 数据库,使用其他数据库与此教程步骤相似。

创建项目所需数据库与表

这部分内容属于 SQL 的使用,本教程不再赘述。本教程中使用的数据表结构如下:

实验用数据表结构

因为本教程项目基于作者的作业,这种表结构很多地方有明显的问题,例如没有管理员表、图书没有库存等等。

使用 IDEA 连接数据库

在 IDEA 右侧找到“数据库”栏,点击展开,然后选择连接 H2 数据库。

1

选择连接类型为:仅 URL ,然后填写用户和密码,填写 URL 后名称会自动改变。

2

如果你是首次连接 H2 数据库,那么需要配置驱动程序,点击驱动程序:h2,跳转到 H2 数据库驱动程序配置,去掉默认的 H2 驱动程序,因为版本太低。然后添加你在 Maven 中以及创建数据表时使用的 H2 jdbc 包。

3

回到数据源设置,点击测试连接,以测试数据库是否存在以及用户名密码是否正确。测试成功,点击应用,确认。

4

一般来说,到这里上图应该能显示数据表了,但与 H2 数据库连接还需要额外的操作。

点击“数据源属性”,重新打开“数据源与驱动程序”窗口,选择高级,勾选“使用 JDBC 元数据内省”

5

确认,然后在右侧点击“刷新”按钮,现在就可以在 IDEA 中看到数据库中的表的结构了。

6

如果你使用的数据库不执行使用 JDBC 元数据内省就可以显示数据表,就不要设置,因为 IDEA 官方文档说这样做可能使一些功能失效。

打开“Persistence(持久化)”窗口

默认情况下,这个窗口是隐藏的。你需要到视图–>工具窗口中找到它。

7

打开后如图:

8

生成持久化映射

在数据库名右键–>生成持久化映射–>通过数据库架构

9

10

注意事项:
1.要生成映射 XML 文件,需要指定文件路径与文件名。
2.不要直接在四个数据表前打钩,而是点击上方全选按钮,不然你会发现直接打钩有些列没有被选中。
3.建议勾选“显示默认关系”选项
3.更多选项的详细信息可以点击窗口左下角的问号查看官方文档。

完成

通过 IDEA 可以很方便地生成实体类,如图:

11

解决报错 Repeated column in mapping for entity

如果你的数据库存在列名相同的外键,那么在使用 JPA 时可能会报错,类似:org.hibernate.MappingException: Repeated column in mapping for entity: com.chiyu.entity.BorderitemEntity column: BID (should be mapped with insert=“false” update=“false”)

解决:在报错信息中找到存在问题的实体类,在其中找到类似 @JoinColumn(name = "OID", referencedColumnName = "OID", nullable = false) 的行,在后面提交一些限制,添加后如下: @JoinColumn(name = "OID", referencedColumnName = "OID", nullable = false,insertable = false,updatable = false)