我寫持久層上使用Spring數據JPA web應用程序,更具體地說,我的DAO擴展JpaSpecificationExecutor
接口,所以我能夠實現某種過濾器;想象有幾個屬性的Item
的名單(我省略爲清楚起見,註釋和其他元數據):JPA規範找到字段的值的子集
data class Item(var tags: MutableList<String>)
在我的業務層,我的濾波方法是這樣的:
fun findBy(tagsToFilterBy: List<String>): List<Items> {
return dao.findAll { root, query, builder ->
builder.//??
}
}
我想要什麼實現的是隻檢索Item
包含正是tagsToFilterBy
S,換句話說,tagsToFilterBy
應該是Item.tags
一個子集。
我知道isMember(...)
方法,但我認爲它的用法只接受單一的「實體」在呼叫不會很宜人,許多標籤。你能幫我一些建議嗎?
我的另一個問題是,直接使用用戶輸入是否安全,比如builder.like(someExpression, inputFromUser)
或者我必須把它放在builder.parameter(...)
然後query.setParameter(...)
。
謝謝你的任何想法
我忘記提到的問題,我可能有更多的屬性來過濾,這就是爲什麼我需要使用'規格' –
我發佈了代碼,解決了我的問題,隨時看看。 –