私は2つのクラスを持っています。 Post
およびComment
。投稿@HandleBeforeCreate
はうまく動作しますが、コメント@HandleBeforeCreate
はありません。なぜだろう?Springデータの残り@HandleBeforeCreateメソッドが呼び出されていません
PostEventHandlerクラス:
@Component
@RepositoryEventHandler(Post.class)
public class PostEventHandler {
@HandleBeforeCreate
public void setPostAuthorname(Post Post) {
System.out.println("This method called successfully!");
}
}
PostRepositoryインタフェース:
@RepositoryRestResource(collectionResourceRel = "posts", path = "posts")
public interface PostRepository extends MongoRepository<Post, String> {
}
Post
クラスなしのカスタムコントローラ/リソースの実装。しかし、私のコメントリポジトリのインターフェースでは、私は、カスタムメソッドを持っており、それは次のようになります。@のよう
@RepositoryRestController
public class CommentController {
@Autowired
private AnnounceRepository announceRepository;
@Autowired
private CommentRepository commentRepository;
@RequestMapping(value = "/announces/{announceId}/comments", method = RequestMethod.GET)
public ResponseEntity<List<Comment>> getAllComments(@PathVariable("announceId") String announceId) {
System.out.println("This method called successfully with a valid PathVariable!);
// Custom interface method works fine
List<Comment> comments = commentRepository.findAllByAnnounceId(announceId);
if (comments != null) {
System.out.println("This method called successfully!);
return new ResponseEntity<>(comments, HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@RequestMapping(value = "/announces/{announceId}/comments", method = RequestMethod.POST)
public ResponseEntity<Comment> createComment(@PathVariable("announceId") String announceId, @RequestBody Comment comment) {
System.out.println("This method called successfully with a valid PathVariable and Comment object!");
Announce announce = announceRepository.findOne(announceId);
if (announce != null) {
commentRepository.save(comment);
announce.getCommentList().add(comment);
announceRepository.save(announce);
return new ResponseEntity<>(HttpStatus.CREATED);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}