我正在嘗試對 H2 資料庫進行簡單的資料插入,但最終出現錯誤
Inferred type 'S' for type parameter 'S' is not within its bound; should extend 'com.carepay.assignment.domain.Post'
我的控制器
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
PostDetails createPost(@Valid @RequestBody CreatePostRequest createPostRequest) {
return postService.createPost(createPostRequest);
}
我的服務
public interface PostService {
PostDetails createPost(@Valid CreatePostRequest createPostRequest);
Page<PostInfo>getPosts(final Pageable pageable);
PostDetails getPostDetails(Long id);
void deletePost(Long id);
}
我的實作
這是我收到錯誤的地方
@Service
public class PostServiceImpl implements PostService {
@Autowired
private PostRepository postRepository;
@Override
public PostDetails createPost(@Valid CreatePostRequest createPostRequest) {
CreatePostRequest createResponse = postRepository.save(createPostRequest);
return createResponse;
}
我的倉庫
@Repository
public interface PostRepository extends JpaRepository<Post, Long> {
}
我的域類
我的 createPostRequest 類
public class CreatePostRequest {
private String title;
private String content;
}
我的 PostDetails 類
public class PostDetails extends PostInfo {
private String content;
}
我的 PostInfo 類
public class PostInfo {
private Long id;
private String title;
}
和我的 Post 模型
@Entity
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
private String content;
}
如何獲取 API 以將資料發布到資料庫。我沒有研究過運氣。先謝謝你
uj5u.com熱心網友回復:
在您的PostService您要保存CreatePostRequest在
CreatePostRequest createResponse = postRepository.save(createPostRequest);
但是,您PostRepository知道Post和 不知道CreatePostRequest。您必須從中提取Post物件CreatePostRequest并將其傳遞給存盤庫的 save 方法。
此外,您的方法回傳相同型別的CreatePostRequest=>CreatePostRequest createResponse = ...而不是PostDetails.
下面我改變了createPost方法你只需要把缺少的部分
@Override
public PostDetails createPost(@Valid CreatePostRequest createPostRequest) {
Post post = new Post();
post.setTitle(createPostRequest.getTitle());
post.setContent(createPostRequest.getContent());
Post savedPost = postRepository.save(post);
PostDetails postDetails = new PostDetails();
postDetails.setId(savedPost.getId());
postDetails.setTitle(savedPost.getTitle());
postDetails.setContent(savedPost.getContent());
return postDetails;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317089.html
上一篇:如何計算陣列json中的值
