Hibernate标准独占限制

时间:2016-01-18 20:14:49

标签: hibernate hibernate-criteria

我需要使用Hibernate Conjunction或Criterion实现过滤函数:

以随机顺序接受包含任何字母'A','F','C','I'的字符串。

返回一个Hibernate标准,当且仅当输入的匹配项与应用的字符串匹配时才会计算为真。

例如:

1)输入'AFCI'仅在应用于'AFCI','ACIF','AICF','FIAC'等时才应返回

2)输入'AI'只有在应用于'AI'或'IA'时才会返回true。如果字段为'AIC','AIF','ACI','AFCI'等,则应返回false。

3)输入'F'仅在应用于'F'时才返回true。在任何其他情况下都应该返回false,即使它包含'F',例如'AF'或'FC'。

任何帮助都将深表感谢,因为我长期陷入困境。

1 个答案:

答案 0 :(得分:1)

在最坏情况(AFCI)中没有很多排列,所以我们可以生成所有排列并检查它的相等性

String toCheck = "AFCI";
List<String> permutations = createPermutations(toCheck);

Criterion result = Restrictions.in("propertyToCheck", permuations);

方法createPermutations()可以使用guava中的Collections2.permutations()

<强>更新

我认为,这个解决方案很专业,因为它很容易理解。它适用于任何数据库。它可以在将来轻松更改或通过其他逻辑扩展。当然,它对于大型字符串没有良好的可扩展性。但对于小弦乐而言,它具有良好的性能。

当然,了解真正专业人士的意见会很有趣。