簡體   English   中英

在 Spring data.repository @query 注解中使用“()”

[英]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);

它應該被替換為:metadataKeyValuemetadataKeyValueIN (: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM