inflearn logo
講義

講義

知識共有

cjyeon10223358さんの投稿

cjyeon10223358 cjyeon10223358

@cjyeon10223358

レビュー投稿数
25
平均評価
5.0

投稿 10

Q&A

안녕하세요. 간단한 인텔리제이 질문이 있습니다.

감사합니다. 혹시나 저와 같은 증상이 있는분을 위해 공유합니다. Editor > Code Style > Java > Code Generation 탭 > Final Modifier 에서 체크 풀면됩니다.

いいね数
0
コメント数
2
閲覧数
595

Q&A

안녕하세요. query에 대해 질문이 있습니다.

안녕하세요 강사님. JPA부터 다시 복습하고 오느냐 우선 중단하고 다시 연관관계부터 하면서 좀 늦었습니다 ! 위에 제가 질문했던 size에 관한건 이해가 다 됐습니다 ! 근데 다른 질문이 있습니다. 제가 사전 데이터를 이렇게 집어 넣었구요. 강사님꺼 전에 강의 다시 들어보면서 참고 많이 되었습니다. 그래서 쿼리를 보면 /* select professor from Professor professor where professor.username = ?1 or professor.position like ?2 escape '!' */ result = [Professor(id=5, userid=null, position=교수, sal=0, hiredate=null), Professor(id=6, userid=null, position=교수, sal=0, hiredate=null)] 이렇게 result로 출력결과 봤을 때 '교수' 라고 되어 있는 값만 나오는것도 확인을 했습니다. 그리고 공부하다 보니 like vs contains 에 대해도 알게 되었습니다. @Test void dynamicQuery4 () throws Exception { String nameParam = " 공학 " ; String nameParam2 = " 공학 " ; List Department > result = searchDepartment4 ( nameParam , nameParam2 ) ; System . out . println ( "result = " + result ) ; } private List Department > searchDepartment4 ( String nameCond , String locCond) { return queryFactory . selectFrom ( department ) . where ( departmentEq (nameCond) . or ( departmentLike (locCond))) . orderBy ( department . id . desc ()) . fetch () ; } private BooleanExpression departmentEq ( String nameCond) { return nameCond != null ? department . name . eq (nameCond) : null ; } private BooleanExpression departmentLike ( String locCond) { return ! StringUtils . hasText (locCond) ? null : department . loc . contains ( " 공학 " ) ; } 1) 여기서 제가 궁금한건 검증작업을 assertThat 으로 작성해서 할 때 교수라는 position 만 가지고 있는 사람만 OK 하고 싶은데요. 이걸 찾아보니 이렇게 하면 professor1, professor2 이쪽에 오류가 발생해서 이렇게 하는건 아닌거 같아서 assertThat(result).filterOn(professor) ' , 'QProfessor' 이렇게 밖에 안나오더라구요. 그래서 어떤방법으로 해야되는지 잘 모르겠습니다. assertThat ( result ) . extracting ( "position" ) . containsExactly ( professor1 , professor2 ) ; @BeforeEach void before () throws Exception { queryFactory = new JPAQueryFactory ( em ) ; Department departmentA = new Department ( " 정보통신공학과 " , "101 호 " ) ; Department departmentB = new Department ( " 컴퓨터공학과 " , "102 호 " ) ; Department departmentC = new Department ( " 음악과 " , "103 호 " ) ; Department departmentD = new Department ( " 국어국문과 " , "104 호 " ) ; em . persist ( departmentA ) ; em . persist ( departmentB ) ; em . persist ( departmentC ) ; em . persist ( departmentD ) ; Professor professor1 = new Professor ( " 김교수 " , " 교수 " , departmentA ) ; Professor professor2 = new Professor ( " 박교수 " , " 교수 " , departmentA ) ; Professor professor3 = new Professor ( " 조교수 " , " 부교수 " , departmentB ) ; Professor professor4 = new Professor ( " 최교수 " , " 부교수 " , departmentC ) ; Professor professor5 = new Professor ( " 이교수 " , " 전임강사 " , departmentD ) ; em . persist ( professor1 ) ; em . persist ( professor2 ) ; em . persist ( professor3 ) ; em . persist ( professor4 ) ; em . persist ( professor5 ) ; } @Test void dynamicQuery3 () throws Exception { String nameParam = " 김교수 " ; String positionParam = " 교수 " ; List Professor > result = searchDepartment3 ( nameParam , positionParam ) ; assertThat ( result . size ()) . isEqualTo (2) ; System . out . println ( "result = " + result ) ; } private List Professor > searchDepartment3 ( String nameCond , String positionCond) { return queryFactory . selectFrom ( professor ) . where ( nameEq (nameCond) . or ( positionLike (positionCond))) . fetch () ; } private BooleanExpression nameEq ( String nameCond) { return nameCond != null ? professor . username . eq (nameCond) : null ; } private BooleanExpression positionLike ( String positionCond) { return ! StringUtils . hasText (positionCond) ? null : professor . position . like (positionCond) ; } 2) 여기서 like 와 contains 의 차이점도 알게되었는데요. 여기서 결과값을 보면 result = [] 아무것도 안나오는데 이유를 잘 모르겠습니다..! @Test void dynamicQuery4 () throws Exception { String nameParam = " 공학 " ; String nameParam2 = " 공학 " ; List Department > result = searchDepartment4 ( nameParam , nameParam2 ) ; System . out . println ( "result = " + result ) ; } private List Department > searchDepartment4 ( String nameCond , String locCond) { return queryFactory . selectFrom ( department ) . where ( departmentEq (nameCond) . or ( departmentLike (locCond))) . orderBy ( department . id . desc ()) . fetch () ; } private BooleanExpression departmentEq ( String nameCond) { return nameCond != null ? department . name . eq (nameCond) : null ; } private BooleanExpression departmentLike ( String locCond) { return ! StringUtils . hasText (locCond) ? null : department . loc . contains ( " 공학 " ) ; } 1) DDL CREATE TABLE DEPARTMENT ( int(4) deptno NotNULL PRI varchar(16) dname NotNULL varchar(100) loc ) CREATE TABLE PROFESSOR ( int(11) profno NotNull PRI varchar(50) name NotNull varchar(50) userid NotNull varchar(20) position NotNull int(10) sal NotNull datetime hiredate NotNull int(11) comm int(11) deptno NotNull MUL ) 3) 원하는 최종 SELECT SQL SELECT deptno, dname, loc FROM department WHERE dname LIKE conat('%', '공학', '%') ORDERY BY deptno DESC 입니다. 감사합니다.

いいね数
0
コメント数
4
閲覧数
1079

Q&A

안녕하세요. query에 대해 질문이 있습니다.

안녕하세요. 강사님 제가 개인적으로 해보다가 질문이 있어서 다시 남기게 되었습니다. 제가 이런식으로 해보았는데요. 쿼리도 /* select department from Department department where department.name = ?1 or department.name = ?2 or department.name = ?3 or department.name = ?4 or department.loc = ?5 */ 이렇게 다 나가구요. /* select department from Department department where department.name = '컴퓨터공학과'1 or department.name = '정보통신공학과'2 or department.name = '음악과'3 or department.name = '국어국문과'4 or department.loc = '104호'5 */ 이렇게 해서 assertThat(result.size()).isEqualTo(5)); 로 하면 org.opentest4j.AssertionFailedError: expected: 5 but was : 4 Expected :5 Actual :4 4라고 나오더라구요. 저는 왜 4인지 잘 모르겠습니다. ㅜ 감사합니다. @Test void testDepartment () throws Exception { String nameParam1 = " 컴퓨터공학과 " ; String nameParam2 = " 정보통신공학과 " ; String nameParam3 = " 음악과 " ; String nameParam4 = " 국어국문과 " ; String locParam = "104 호 " ; List Department > result = searchDepartment ( nameParam1 , nameParam2 , nameParam3 , nameParam4 , locParam ) ; assertThat ( result . size ()) . isEqualTo (5) ; } private List Department > searchDepartment ( String nameParam1 , String nameParam2 , String nameParam3 , String nameParam4 , String locParam) { BooleanBuilder builder = new BooleanBuilder () ; if (nameParam1 != null ) { builder . or ( department . name . eq (nameParam1)) ; } if (nameParam2 != null ) { builder . or ( department . name . eq (nameParam2)) ; } if (nameParam3 != null ) { builder . or ( department . name . eq (nameParam3)) ; } if (nameParam4 != null ) { builder . or ( department . name . eq (nameParam4)) ; } if (locParam != null ) { builder . or ( department . loc . eq (locParam)) ; } return queryFactory . selectFrom ( department ) . where ( builder ) . fetch () ; }

いいね数
0
コメント数
4
閲覧数
1079

Q&A

강사님 QueryDSL이 안됩니다..

안녕하세요. 강사님 강의 도중 질문이 있어서 문의드립니다.~ OrderRepository 랑 OrderService 수정 후에 주문 내역부분에 서 500에러가 발생합니다. 그래서 확인해보니 템플릿 파싱 에러라고 하는데 이런 경우에는 어디쪽을 살펴보면 괜찮을까요? There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") Exception processing template "order/orderList": An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") 감사합니다.

いいね数
0
コメント数
3
閲覧数
6252

Q&A

postman에서 400 에러가 발생합니다.

안녕하세요 강사님. 처음에 강의에 나온대로 했는데도 같은 증상입니다. ㅜ 그리고 처음 스크린샷은 10:19 에 나오는대로 "id": 2 가 나오게 할려고 했었습니다.

いいね数
0
コメント数
3
閲覧数
1245