반응형
이론을 통해서를 쓰는것은 알았지만, 단순한 findById 와같은 where절을 사용하는 것이 아닌 ,
다소 복잡(내기준)한 JPA 메소드를 쓰는게 너무 어려웠다. native 쿼리문을 써야하나 고민하다가
내가 원하는 데이터도 JPA 메소드를 통해서 가져올 수 있다는 사실을 알게되었다.(생각보다 많은 정보들을 조회해 올 수 있다.
public interface StdAttendanceRepository extends JpaRepository <StdAttendance, Long> {
//여기는 필드명 기준 여기는?
List<StdAttendance>findByStdAtdDateAndCourseLectureLecCode(Long stdAtdDate, Long lecCode );
}
findBy 까지는 다들 알고 있겠지,
StdAtdDate : StdAttendance라는 엔티티를 기준으로 조회해오면 된다. -> 이부분은 어렵지 않았다.
하지만 나는 특정 주차 만 가져올게 아니라, 특정 강의의, 특정 주차를 가져와야 했는데...
StdAttendance의 구성은
package com.greedy.mingle.stdAttendance.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.DynamicInsert;
import com.greedy.mingle.cource.entity.Course;
import com.greedy.mingle.subject.entity.Department;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name="TBL_STD_ATTENDANCE")
@DynamicInsert
@SequenceGenerator(name="SEQ_STD_ATD_CODE", sequenceName="SEQ_STD_ATD_CODE", allocationSize=1)
public class StdAttendance {
@Id
@Column(name="STD_ATD_CODE")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STD_ATD_CODE")
private Long stdAtdCode;
@Column(name="STD_ATD_STATUS")
private String stdAtdStatus;
@Column(name="STD_ATD_DATE")
private Long stdAtdDate;
@ManyToOne
@JoinColumn(name="COURSE_CODE")
private Course course;
이렇게 되어있다. 여기서 데이터의 지도를 잠시 펼처 보자면,
Course 의 객체 안에 Lecture라는 객체가 있고 그 안에 LecCode가 필요한 상황 !
그렇기 떄문에 뒤에
AndCourseLectureLecCode(Long stdAtdDate, Long lecCode );
And 다음에 CourseLectureLecCode라는 식으로 입력해주면 객체안의 객체안의 그값! 식으로 작성할 수 있다..
라는 사실을 오늘 경험치 +1 했습니다!!
"이렇게 하나씩 알아가는거지!"
반응형
'매일매일 배운 그것들' 카테고리의 다른 글
3. @ModelAttribute는 form에 담아서 보내야 한다. (0) | 2023.06.02 |
---|---|
왕초보에서 초보되기 (0) | 2023.05.29 |