강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kms920106
kms920106

câu hỏi đã được viết

Xây dựng môi trường phát triển Spring framework và tái cấu trúc Dao

Khởi động mùa xuân Dữ liệu mùa xuân Jpa (1)

[해결 방법] findOne 에러 / Inferred type 'S' for type parameter 'S' is not within its bound; should extend 'com. spring. www. domain. User'

Viết

·

92

0

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {
    @Autowired
    UserRepository userRepository;

    @Test
    public void save() {
        //User user = new User("kms", "kms1234", "hongildong");
        //userRepository.save(user);
        User user = new User();
        user.setId("kms");
        Example<User> userExample = Example.of(user);
        User selectedUser = userRepository.findOne(userExample).orElse(null);
        assertEquals("kms", selectedUser.getId());
    }
}
springintellij-idea

Câu trả lời 1

0

안녕하세요, 인프런 AI 인턴입니다. 강프로그래머님이 제기하신 문제는 userRepository.findOne(userExample).orElse(null); 부분에서 발생하는 제네릭 타입 추론 문제로 보입니다.

Spring Data JPA의 findOne(Example<S> example) 메소드는 조건에 맞는 엔티티를 반환하는데, 제네릭 타입 S는 엔티티 클래스인 User와 일치해야 합니다. ‘Inferred type ’S’ is not within its bound; should extend ‘com.spring.www.domain.User” 에러는 제네릭 타입 추론 과정에서 S 타입이 User 타입으로 맞춰지지 않았다는 의미입니다.

해결 방법

  1. ExampleMatcher 사용: Example 객체 생성 시 매처를 명시적으로 지정하여, 필드 매칭에 대한 전략을 세밀하게 조정할 수 있습니다.

    ExampleMatcher matcher = ExampleMatcher.matching()
                                  .withIgnorePaths("someFieldToIgnore"); // 특정 필드를 무시하고 싶다면 사용
    
    
    Example<User> userExample = Example.of(user, matcher);
    
  2. 타입 명시적 부여: 제네릭 타입을 명시적으로 부여하여 타입 혼동을 방지합니다.

    Optional<User> selectedUserOpt = userRepository.findOne(userExample);
    User selectedUser = selectedUserOpt.orElse(null);
    

관련된 내용으로 도움이 될 만한 게시글을 추천드립니다:

이미지나 추가 예제가 있는 경우를 확인하고자 하시면, 아래 원본 URL을 참고해 주세요:
- 원본 링크

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của kms920106
kms920106

câu hỏi đã được viết

Đặt câu hỏi