Posts
@NoArgsConstructor
@Setter
@Getter
@Entity
public class Posts {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long postId;
@Column(name = "title", nullable = false)
private String title;
@Lob
@Column(name = "content", nullable = false)
private String content;
@JoinColumn(name = "memberId",nullable = false)
@ManyToOne
private Member member;
public void setMember(Member member) {
this.member = member;
if(!member.getPosts().contains(this)) {
member.getPosts().add(this);
}
}
}
Member
@Setter
@Getter
@Entity
@NoArgsConstructor
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long memberId;
@Column(name = "email", nullable = false, unique = true)
private String email;
@Column(name = "password", nullable = false)
private String password;
@OneToMany(mappedBy = "member")
private List<Posts> posts;
public void addPosts(Posts post) {
posts.add(post);
if(post.getMember() != this) {
post.setMember(this);
}
}
}
쿼리문
@Query("select p from Posts p join fetch p.member where p.postId = :postId and p.member.memberId = :memberId")
public Optional<Posts> find(@Param("postId") Long postId, @Param("memberId") Long memberId);
결과
Hibernate:
select
posts0_.post_id as post_id1_1_0_,
member1_.member_id as member_i1_0_1_,
posts0_.content as content2_1_0_,
posts0_.member_id as member_i4_1_0_,
posts0_.title as title3_1_0_,
member1_.email as email2_0_1_,
member1_.password as password3_0_1_
from
posts posts0_
inner join
member member1_
on posts0_.member_id=member1_.member_id
where
posts0_.post_id=?
and posts0_.member_id=?