3

我有一个 Java 超类 - 消息 - 和 3 个子类 - 问题、报告、更新。对于这 4 个类中的每一个,我都有一个单独的控制器(lister),它使用 Hibernate 从数据库中获取对象。此外,这些控制器中的每一个都为其使用的类添加了一些特定的过滤条件(限制)。ListMessages 可以为 Message 类中的字段添加条件,ListProblems 可以为 Message 字段和问题特定字段添加条件。但是有没有办法使用子类中的字段过滤消息?

例如 Message 有字段内容,Problem 有状态,Report 有 refusalReason(都是 Strings)。我可以按内容过滤所有消息,按内容和状态过滤问题,按内容和拒绝原因过滤报告。但是有没有办法按内容、状态和拒绝原因过滤消息?我需要这个,因为我想要一个所有消息的列表,但能够过滤所有与过滤模式匹配的实际上是状态问题(或带有拒绝原因的报告)的消息。不幸的是,我无法从数据库中获取消息并在 Java 代码中对其进行过滤——它们需要在数据库端进行过滤。

4

1 回答 1

1

我不知道您使用的是哪种休眠查询语言,所以我只会回答这个问题。如果您发布您拥有的查询(语言),我会看看是否可以通过示例更新问题。

您需要做的是使用左外连接来包含子类,并对每个连接施加额外的限制以包含您想要的过滤。这应该会给您留下所需的消息。

于 2011-11-04T09:18:24.327 回答