해결된 질문
작성
·
462
0
글을 조회하면 조회수가 1 올라가도록 서비스를 짰는데, 문제는 조회수를 올리면서 lastModifiedDate 필드도 함께 업데이트 됩니다.
제가 원하는 동작은 글 작성자가 글을 수정했을 때만 lastModifiedDate 필드가 업데이트되는 것입니다.
이 경우에는 상속을 하지 않고 lastModifiedDate 필드를 따로 만들어 수정 메소드에서 lastModifiedDate 필드를 수정하는게 best practice 일까요?
감사합니다.
@MappedSuperclass
@Getter
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
public boolean isModified() {
return !createdDate.isEqual(lastModifiedDate);
}
}
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post extends BaseEntity {
@Id
@GeneratedValue
@Column(name = "post_id")
private Long id;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "member_id")
private Member member;
private int views;
private String title;
@Column(length = 2000)
private String content;
public Post(Member member, String title, String content) {
this.member = member;
this.title = title;
this.content = content;
}
public void increaseViews() {
views += 1;
}
}
@Service
@RequiredArgsConstructor
@Transactional
public class PostService {
private final PostRepository postRepository;
public Post write(Post post) {
return postRepository.save(post);
}
@Transactional(readOnly = true)
public Page<Post> findAll(Pageable pageable) {
return postRepository.findAll(pageable);
}
public Post view(Long id) throws PostNotFoundException {
Post post = postRepository.findById(id).orElseThrow(() -> new PostNotFoundException("게시물을 찾을 수 없습니다."));
post.increaseViews();
return post;
}
}
public interface PostRepository extends JpaRepository<Post, Long> {
@Override
@EntityGraph(attributePaths = {"member"})
Page<Post> findAll(Pageable pageable);
}
감사합니다. ^^