内容与标签这两种实体之间存在一个多对多的关系,一个内容上可以包含多个标签,一个标签也可以属于多个内容。
先去定义一下这两种实体之间的多对多关系,打开 Tag 实体, 定义多对多的关系,可以用一下 @ManyToMany 装饰器,先描述一下关系关联的实体的类型,类型是 Post 实体,再描述一下在 Post 实体那里这个关系是什么,可以是 post 上的 tags,等会儿再到 Post 实体上去定义这个 tags 关系。关系的名字叫 posts,值的类型是一组 Post。
下面再打开 Post 实体,在这里同样可以使用 @ManyToMany 去定义一个多对多的关系,关系关联的实体类型是 Tag,在 Tag 那里这个关系就是刚才定义的 tag 上的 posts。
关系的名字叫 tags,值的类型是一组 Tag。
我们可以让这个 Post 实体拥有他跟 Tag 之间的关系,所以在这个关系上再用一个 @JoinTable() ,创建一个连接表,保存一下这个实体文件。
打开数据库客户端,观察一下应用的数据库,你会发现这里多了一个 post_tags_tag 这个表,在这个表里保存的东西就是 Post 与 Tag 之间的关系,这个表里要记录的是 post 记录的 id 还有 tag 数据记录的 id。