【发布时间】:2010-11-11 06:01:14
【问题描述】:
我正在对 Flex 仪表板进行增强,以允许用户保存搜索。我在服务器端使用 BlazeDS 和 Java/Spring/SpringJdbc。
我的问题是:您将如何为具有一个或多个条件的搜索建模,例如:
- 起息日在 2009-10-01 和 2009-10-31 之间
- 货币 = '美元'
- 银行名称以“First”开头
我的第一个尝试是将标准分为 3 种类型:
- 数字标准
- 日期标准
- 字符串条件
每种标准类型都有一组不同的比较运算符:
- 数字运算符:=、>、>=、
- 日期运算符:之前、之后、之间
- 字符串运算符:开始于、结束于、包含
我有代码来识别这些运算符中的每一个。
我的对象模型是一个 SearchCriteria 接口和 3 个实现它的类:NumericCriteria、DateCriteria 和 StringCriteria
所有这些类都映射到具有以下列的同一个表:
- SAVED_SEARCH_ID: id of the saved search
- SEQ_NUM: criteria order. We want to load the criteria in the same order each time
- CRITERIA_TYPE: Operator code. I can use this later to determine what kind of criteria this is.
- FIELD: currency, valueDate, bank, etc
- FIRST_VALUE_NUMERIC
- SECOND_VALUE_NUMERIC
- FIRST_VALUE_DATE
- SECOND_VALUE_DATE
- FIRST_VALUE_STRING
- SECOND_VALUE_STRING
有没有更清洁的方法来做到这一点?我对数据模型并不疯狂,但我找不到关于这个主题的任何资源......无论多么残忍,所有的 cmets 都受到赞赏:)
【问题讨论】:
标签: java database-design