74770


下記のコードですが、ManagementEntity型のListの変数 `selectBysp_cdForUpdate` に `sp_cdList`
を引数として渡している。  
というコードだと思うのですが、`@Query` が `public List<ManagementEntity>
selectBysp_cdForUpdate(List<String> sp_cdList);`
に対して何をしているのかが分からないため、教えていただきたいです。

[code]

    @Query(value = "select * from shop_no"
            + " where sp_cdin ?1"
            + " for update", nativeQuery = true)
    public List<ManagementEntity> selectBysp_cdForUpdate(List<String> sp_cdList);
    
[/code]


CC BY-SA 4.0
2021-03-19T01:51:29.663
74752
2021-03-19T17:04:01.390
2021-03-19T17:04:01.390
3060
32774
question
java spring
@Queryの処理について


`selectBysp_cdForUpdate`の第1引数である`sp_cdList`の値が`?1`に代入されるような形で、最終的にSQLが発行されます。

`?1` はプレースフォルダと呼ばれるものです。

このあたりが参考になると思います。  
<https://www.baeldung.com/spring-data-jpa-query#1-jpql-2>  
<https://www.baeldung.com/spring-data-jpa-query#2-native-2>

ご質問者のコードには `nativeQuery = true` が記載されているので、上記リンクの２つ目のものですね。

ということで

> @Queryがpublic List selectBysp_cdForUpdate(List
> sp_cdList);に対して何をしているのかが、わからないです。

`@Query`が`selectBysp_cdForUpdate`メソッドに対して何かしていると考えるより、逆の`selectBysp_cdForUpdate`メソッドが`@Query`の文に何かしている（今回の場合は`?1`を置き換えている）と考えたほうがわかりやすいでしょう。


CC BY-SA 4.0
2021-03-19T14:29:10.523
74770
2021-03-19T14:34:53.333
2021-03-19T14:34:53.333
9008
9008
74752
answer