[英]Use $or operator in @Query annotation in spring data mongodb repository
[英]Use "()" in Spring data.repository @query annotation
我有 sql 查詢:
SELECT file From file JOIN metadata m on file.id = m.file_id where (m.key, m.value) in (('Alex', 'redis'), ('Evgeniy','123'))
如何為 Spring data.repository 接口編寫 @Query 注釋?
我像這樣試過,但它不起作用。
public interface FileRepository extends CrudRepository<FileEntity, UUID> {
@Query("SELECT f FROM FileEntity f JOIN MetadataEntity m on f.id = m.file_id WHERE (m.key, m.value) in :metadataKeyValue")
List<FileEntity> findAllByMetadataContains(@Param(":metadataKeyValue") Map<String,String> metadataKeyValue);
}
和
public interface FileRepository extends CrudRepository<FileEntity, UUID> {
@Query(
"SELECT f FROM FileEntity f JOIN f.metadata m WHERE (m.key, m.value) IN :metadataKeyValue"
)
List<FileEntity> findAllByMetadataContains(@Param("metadataKeyValue") Map<String,String> metadataKeyValue);
}
或者像這樣
@Query(
value = "SELECT f FROM FileEntity f JOIN f.metadata m WHERE (m.key, m.value) IN (:metadataKeyValue)"
)
List<FileEntity> findAllByMetadataContains(@Param("metadataKeyValues") Map<String,String> metadataKeyValue);
它應該被替換為:metadataKeyValue
到metadataKeyValue
和IN (:metadataKeyValue)
public interface FileRepository extends CrudRepository<FileEntity, UUID> {
@Query("SELECT f FROM FileEntity f JOIN MetadataEntity m on f.id = m.file_id WHERE (m.key, m.value) IN (:metadataKeyValue)")
List<FileEntity> findAllByMetadataContains(@Param("metadataKeyValue") Map<String,String> metadataKeyValue);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.