1
我試圖想出一個標準,將檢查某個字符串是否是一種可能的模式之一。多個或在休眠限制使用析取或在相同的字段
例如myField
不應當符合以下任一模式:pattern1%
,pattern2%
,pattern3%
如果我是做在同一時間這一項,限制看起來像
criteria.add(Restrictions.not(Restrictions.in("myField", "pattern1%")))
每個模式。由於有幾個,我想從休眠嘗試disjunction
限制,如回答發現here。舉例來說,我們只是說我沒有使用模式,而是等同於一系列固定的字符串。所以我希望有這樣的東西:
criteria.add(
Restrictions.disjunction()
.add(Restrictions.like("myField", "str1"))
.add(Restrictions.like("myField", "str2"))
)
但是,由於某種原因,這是行不通的。當我把它改爲:
criteria.add(
Restrictions.disjunction()
.add(Restrictions.like("myField", "str1"))
.add(Restrictions.like("anotherField", "str2"))
)
它,所以我不知道這是否是因爲脫節不會允許多個條件相同的場。但是,第15.2節中的樣本here與「年齡」字段顯示爲不同。
因此,此刻,我被迫使用
criteria.add(
Restrictions.in("myField", new String[] {"str1", "str2"})
)
其中只有一半的解決了我的問題,因爲我需要的模式是在那裏的地方。
所以我的問題是,是否有可能使用disjunction或in來檢查一個字符串是否匹配任何可能定義的模式?如果是這樣,怎麼樣?或者,還有更好的方法?
謝謝!