2

我有一个控制器,它使用 Spring 自动将 HTTP 请求参数映射到业务域对象。我将域对象中的字段数据保存到数据库中。

我有另一个控制器需要支持搜索与域对象相关的任何字段组合。对于某些字段(例如日期字段),我需要允许在一个范围内进行搜索。所以,我不能重用域对象,因为它只有一个日期字段。

例如,我有一个带有日期字段的报告域对象。但是,搜索需要一个“来自”报告日期字段和一个“至”报告日期字段。

我是否应该创建一组仅用于搜索的域对象,这些对象主要反映业务域对象(支持范围搜索的字段除外)?还是有更好的方法来做到这一点?

在此先感谢您的帮助。

4

2 回答 2

0

如何在现有域对象中为范围添加两个字段而不是创建新对象?
就像添加两个新字段fromReportDatetoReportDate您的报告域对象一样。

于 2012-10-03T06:25:19.127 回答
0

你能考虑引入一个类似Criteria的对象吗?

我不会根据您当前拥有的内容创建更多业务对象,仅仅是因为您没有对这些实体进行建模 - 您正在对用于查找它们的搜索条件进行建模。

例如,您可能会执行以下操作:

CriteriaBuilder<Report> builder = new CriteriaBuilder<Report>();
builder.addFrom("date", new Date())
builder.addTo("date", new Date());
Criteria<Report> criteria = builder.build();

可以反射性地检查类属性,CriteriaBuilder以确保您没有尝试将标准绑定到不存在的字段。

于 2012-10-03T08:20:55.723 回答