我认为在我的用例中使用单表继承是一个好主意 - 能够在一个表中存储不同的内容类型。在我的情况下,存储不同的文章类型(链接,文本,图像)。
我正在制作不同文章(图片,文字和链接)的 Feed ,并遇到了我无法解决的问题{ {1}}并包含超级课程?有没有解决的办法?我选择了错误的数据库架构设置吗?
如果我能够 从文本中选择所有内容 并且拥有链接&包括图像对象。
我面临的另一个问题是我是否应该在春季为我的select * from text
课程使用一个控制器?目前,我为每个扩展实体提供了3种不同的控制器和3种不同的服务?!
答案 0 :(得分:0)
文本既是成员又是实体本身?我不建议这样做。但我尝试将控制器集中在请求和响应交互上。您不一定需要每个实体的控制器。我这样做了,我发现它使我的应用程序围绕实体而不是用户尝试的过程。绝对是每个实体的Dao和服务,但控制器是关于用户在我看来与应用程序进行交互。
我不确定你在hibernate中查询基表的问题。我知道你可以在JPA中使用treat()JPA Criteria Query over an entity hierarchy using single table inheritance做类似的事情。但我不会这样做。而只是在Text Service层中具有此功能,该层可以访问所需的所有Daos。当然,如果你有数百个类扩展文本我会寻找你正在寻找的类型的解决方案,但看到你只有3我认为解决方案没问题,你只会有3个daos。
这样做也意味着您不必担心摆脱单表策略。
所以在服务层,它只是:
List<String> texts = textDao.getAllText();
texts.addAll(linkDao.getAllText());
texts.addAll(imgDao.getAllText());
return texts;
可能是最简单的。