我有一个Java超类- Message -和3个子类- Problem,Report,Update。对于这4个类中的每个类,我都有一个单独的控制器(lister),它使用Hibernate从数据库中获取对象。此外,这些控制器中的每一个都添加了一些特定于它所使用的类的过滤条件(限制)。ListMessages可以为消息类中的字段添加条件,ListProblems可以为消息字段和问题特定字段添加条件。但是,有没有办法使用子类中的字段来过滤消息呢?
例如,Message有一个字段content,Problem有status,Report有refusalReason (all String)。我可以按内容过滤所有邮件,按内容和状态过滤问题,按内容和refusalReason过滤报告。但是有没有办法根据内容、状态和refusalReason来过滤消息呢?我需要它,因为我希望有一个包含所有消息的列表,但又希望能够过滤所有与过滤模式匹配的实际状态问题(或refusalReason报告)的消息。不幸的是,我无法从数据库中获取消息并在Java代码中对其进行过滤-它们需要在数据库端进行过滤。
发布于 2011-11-04 17:18:24
我不知道您使用的是哪种hibernate查询语言,因此我将大致回答这个问题。如果你发布你的查询(语言),我会看看我是否可以用一个例子来更新这个问题。
您必须做的是使用左外部连接来包括子类,并对每个连接添加一个额外的限制,以包括您想要的过滤。这应该会给您留下所需的消息。
https://stackoverflow.com/questions/7993285
复制相似问题