Hibernate 标准排他性限制
Hibernate criterion exclusive restriction
我需要使用 Hibernate Conjunction 或 Criterion 实现一个过滤函数:
以随机顺序最多一次接受包含任何字母 'A'、'F'、'C'、'I' 的字符串。
Returns 一个 Hibernate 标准,当且仅当输入出现与应用的字符串匹配时才评估为真。
例如:
1) 输入 'AFCI' 应该 return 仅当应用于 'AFCI'、'ACIF'、'AICF'、'FIAC' 等时才为真。
2) 输入 'AI' 只有应用于 'AI' 或 'IA' 时才应 return 为真。如果字段是 'AIC'、'AIF'、'ACI'、'AFCI' 等,应该 return false
3) 输入 'F' 只有应用于 'F' 才应 return 为真。在任何其他情况下应该 return false,即使它包含 'F',例如 'AF' 或 'FC'.
任何帮助将不胜感激,因为我被困在这个问题上太久了。
最坏(AFCI)情况下的排列不多,所以我们可以生成所有排列并检查它们是否相等
String toCheck = "AFCI";
List<String> permutations = createPermutations(toCheck);
Criterion result = Restrictions.in("propertyToCheck", permuations);
方法createPermutations()
可以使用来自番石榴的Collections2.permutations()
。
已更新
我认为,这个解决方案很专业,因为它很容易理解。它适用于任何数据库。它可以在将来轻松更改或使用其他逻辑进行扩展。当然,它对于大字符串没有很好的可扩展性。但对于小字符串它有很好的表现。
当然,了解真正专业人士的意见会很有趣。
我需要使用 Hibernate Conjunction 或 Criterion 实现一个过滤函数:
以随机顺序最多一次接受包含任何字母 'A'、'F'、'C'、'I' 的字符串。
Returns 一个 Hibernate 标准,当且仅当输入出现与应用的字符串匹配时才评估为真。
例如:
1) 输入 'AFCI' 应该 return 仅当应用于 'AFCI'、'ACIF'、'AICF'、'FIAC' 等时才为真。
2) 输入 'AI' 只有应用于 'AI' 或 'IA' 时才应 return 为真。如果字段是 'AIC'、'AIF'、'ACI'、'AFCI' 等,应该 return false
3) 输入 'F' 只有应用于 'F' 才应 return 为真。在任何其他情况下应该 return false,即使它包含 'F',例如 'AF' 或 'FC'.
任何帮助将不胜感激,因为我被困在这个问题上太久了。
最坏(AFCI)情况下的排列不多,所以我们可以生成所有排列并检查它们是否相等
String toCheck = "AFCI";
List<String> permutations = createPermutations(toCheck);
Criterion result = Restrictions.in("propertyToCheck", permuations);
方法createPermutations()
可以使用来自番石榴的Collections2.permutations()
。
已更新
我认为,这个解决方案很专业,因为它很容易理解。它适用于任何数据库。它可以在将来轻松更改或使用其他逻辑进行扩展。当然,它对于大字符串没有很好的可扩展性。但对于小字符串它有很好的表现。
当然,了解真正专业人士的意见会很有趣。