首页 > 解决方案 > 一个集合中的多个实体类型与 JPA

问题描述

语境

在我的应用程序中,我有几个子类(Admin、Parent、Chaperone)都扩展了给定的超类(Contactable)。我已将管理员、父母和陪伴用户分开到他们自己的表中。

问题

我正在尝试在三种用户类型之间构建一个群聊,其中主题是父级的给定子级。我有一个使用子 ID 作为 PK 的群聊实体,它包含一组消息。

我想做的是在群聊实体中有一个@OneToMany 消息集合,其中每条消息都映射到伴侣、父母或管理员。

可能的解决方案

对于来自每种用户类型的消息,我可以在 GroupChat 实体中拥有三个集合。来自每个用户类型的消息也将是它们自己的实体(ParentMessage、ChaperoneMessage...)。然后,我会根据请求压缩来自每个集合的消息,以按时间顺序显示来自所有用户类型的消息。

我不喜欢那个解决方案。

有没有办法利用泛型,这样我可以有一个消息实体,以及这些消息的群聊中的一个集合,并让 jpa 处理其余的?(一厢情愿,但不问不知道!)

谢谢!

标签: hibernatejpaspring-data-jpa

解决方案


推荐阅读