

SpringBootを使ってWEBシステム開発を行っています。  
JPAのfindById(ID id)で汎用的にデータを取得する方法は分かるのですが  
Entityに複数の@IDを設定して、複数のIDでデータ取得したいと考えています。  
今一つ実装方法がわかりません。サンプルも少なくて、、、  
この場合、findAllById(Iterable ids)使うのでしょうか？

補足  
findBy△△And〇〇()メソッド以外の方法を探しています。


CC BY-SA 4.0
2020-12-25T23:34:39.653
72892
2023-01-08T15:01:35.243
34875
question
java spring jpa
Spring Data JPAの複数IDのアクセス方法について質問


アノテーション
[`@IdClass`](https://docs.oracle.com/javaee/7/api/javax/persistence/IdClass.html)
で複合主キーを表現できます

[code]

    @Entity
    @IdClass(FullName.class)
    public class Person {
    
        @Id
        private String sei;
        @Id
        private String mei;
    
        private LocalDate birthday;
    
        // getters and setters
    }
    
[/code]

[code]

    public class FullName implements Serializable {
        /** 姓 */
        private String sei;
        /** 名 */
        private String mei;
    }
    
[/code]

が、このとき、 Spring Data JPA のリポジトリインタフェースを用いる場合、単項主キーの場合と同じく、

[code]

    @Repository
    public interface PersonRepository extends JpaRepository<Person, FullName> {
    }
    
[/code]

というような定義になります。  
従って、主キーで検索するメソッドも変わらず主キーの型(`FullName`)を引数に採る`findById` メソッドで行うことになります。

[code]

    @RestController
    @RequestMapping("")
    @RequiredArgsConstructor
    public class MyController {
    
        private final PersonRepository personRepository;
    
        @GetMapping
        public Optional<Person> index() {
            return personRepository.findById(new FullName("新渡戸", "稲造"));
        }
    }
    
[/code]

([サンプル実装](https://github.com/yukihane/stackoverflow-qa/tree/master/jaso72892))


CC BY-SA 4.0
2021-08-10T02:18:52.780
80699
2021-08-10T02:18:52.780
2808
72892
answer