如果有多個匹配項,Spring Data 的 findBy 如何決定回傳哪個資料庫記錄?
我意識到,如果我的 Elastic Search 資料庫中有多個條目具有相同的屬性代碼(即:“123”),那么當我呼叫“findByAttributeCode”時,Spring 只會回傳一個條目。
如果我使用 findById,它作為 Id 的自我解釋是唯一的,但是對于其他 findBys,可以有很多匹配項。注意:attributeCode 不是唯一的。
Spring如何決定回傳哪一個?
我的電話是這樣的:
Attribute attribute = findByAttribute(attributeCode);
回購將如下所示:
public interface AttributeRepository extends ElasticsearchRepository<Attribute, String> {
Attribute findByAttributeCode(String attributeCode);
}
uj5u.com熱心網友回復:
如果有不止一種可能性,您應該做的是像這樣創建方法存根:
<Iterable>Attribute findByAttributeCode(String attributeCode);
這樣你就可以全部歸還。如果你不這樣做,你會感謝 RDBMS 是如何構建它的,它會從它構建的查詢回傳的多個元組中回傳單個條目,這應該是這樣的:
select * from table where attributeCode = ?;
uj5u.com熱心網友回復:
這取自您為函式定義的回傳型別。如果您指定一個集合,則會為您的查詢回傳所有匹配的檔案。
如果您將單個物件定義為回傳型別,則會回傳從底層存盤(此處為 Elasticsearch)回傳的第一個條目。第一個條目是什么,取決于您的查詢條件、排序引數——無論 Elasticsearch 首先回傳什么,都會回傳給呼叫者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/464980.html
上一篇:如何使用異步存盤讀取json資料
