Junit5로 테스트를 생성해서 그런지 Test애노테이션에 expected 라는 옵션이 없어서 @Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); } 이렇게 만들어서 돌렸는데 테스트가 통과했다면 그냥 넘어가도 되는 것일까요? @Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); fail("재고 수량 부족 예외가 발생해야 한다."); } 이렇게 돌리면 재고 수량 부족 예외가 발생해야 한다. java.lang.AssertionError: 재고 수량 부족 예외가 발생해야 한다. 라는 예외가 발생했습니다.
public int getTotalPrice() { return orderPrice * count; } public int getTotalPrice() { return getOrderPrice() * getCount(); } 주문 아이템의 가격을 반환해야할 때 당연히 위처럼 코드를 작성해야겠다고 생각했는데, 강의를 보니 아래처럼 하시더라구요 결국 같은 값을 반환하는 것 같은데 어떤 차이가 있는지 알 수 있을까요 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. @Column에서 unique나 length제약조건을 거는것은 런타임에 영향을 주지 않는다 하시고 @Table에서 name을 사용해서 테이블 명을 바꾸는것은 런타임에 영향을 주신다고 하셧는데 둘의 차이를 이해하지 못하고 있습니다. @Table의 name을 변경하는것이 인서트 쿼리나 업데이트 쿼리에 영향을 준다고 하셧는데 이 말 자체를 이해하지 못하고 있는 것 같습니다..
안녕하세요 선생님. 강의를 잘 듣고 있는 학생입니다. 커뮤니티의 답변을 보니 IN에는 %를 사용할 수 없다고 봤습니다. 그러면 Weather Observation Station 6번 문제의 쿼리를 SELECT DISTINCT name FROM station WHERE city LIKE 'i.e.%' or city LIKE 'a%' or city LIKE 'e%' or city LIKE 'i%' or city LIKE 'o%' or city LIKE 'u%'; 이 아니라 SELECT DISTINCT city FROM station WHERE IN(city LIKE 'i.e.%', city LIKE 'a%', city LIKE 'e%', city LIKE 'i%', city LIKE 'o%', city LIKE 'u%'); 로 작성하는거는 IN에 %를 쓰는 것이 아니라 LIKE 안에 사용하는데도 에러가 나는 이유를 알고 싶습니다. 또한 OR이 아니라 IN을 사용하여 해당 문제를 보다 효율적으로 쿼리를 작성할 수 있는 방법이 있는지 알고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 윈도우 cmb창에서 명령 프롬프트에서 gradlew.bat 를 실행하려면 gradlew 하고 엔터를 치면 됩니다. --> 여기까지는 실행이 됬으나 gradlew build에서 BUILD FAILED 됩니다... 도저히 모르겠습니다.
안녕하세요, 선생님 항상 친절하고 자세한 답변 감사드립니다. 강의 자료 중 select * from hr.emp_salary_hist a where todate = ( select max (todate) from hr.emp_salary_hist x where a.empno = x.empno); 여기서 where a.empno = x.empno 이 부분은 왜 필요한건가요? select * from hr.emp_salary_hist where todate = ( select max (todate) from hr.emp_salary_hist ) ; 이것도 결과는 같기도 하고 같은 데이터에서 값을 찾는거라 굳이 where a.empno = x.empno 이 왜 필요한지 잘 모르겠습니다. 감사합니다.
실습코드 'first_value_last_value_Analytic_실습'의 마지막 "-- 연속된 데이터 흐름에서 값이 Null일 경우 바로 값이 있는 바로 위의 데이터를 가져 오기." 와 관련된 질문입니다(아마도 실습코드는 있는데 본 강의에서는 다루지 않으신 듯합니다). (예제코드) temp_04 as ( select * , max(lpad(rnum::text, 6, '0')||daily_sum) over (order by ord_date rows between unbounded preceding and current row) as temp_str from temp_03 order by ord_date ) dayily_sum자체를 일정한 자리수로 padding을 해주고 난 뒤 처리해도 되지 않을까 생각해봤습니다. temp_04 as ( select * , max(lpad(rnum::text, 6, '0')||lpad((daily_sum)::text,6, '0' )) over (order by ord_date rows between unbounded preceding and current row) as temp_str from temp_03 order by ord_date ) 이렇게 해서 처리해도 될까요?
위 이미지에서 출력 된 문자 : '('abcd1234'), mb_name = '이름', mb_nick =' 글쓴이가 생각하는 아마도 오류라고 생각되는 부분 : ('$admin_pass'), mb_name = '$admin_name', mb_nick = 이것저것 건드려봤지만 잘 모르겠네요;;
Set2 - 1번 문제 풀이를 보고 같게 작성 후 코드를 돌렸는데 답이 이상하게 나옵니다. SELECT city , length(city) len FROM STATION ORDER BY len, city LIMIT 1; SELECT city , length(city) len FROM STATION ORDER BY len DESC, city LIMIT 1 이렇게 작성 후 돌리면 다음과 같이 나오네요 왜 이럴까요...? submit code를 눌러도 오답이라고 뜹니다.
select product_id, product_name , unit_price, round ( sum (unit_price) over ( order by unit_price),2) as unit_sum from products ; 실행시 "SQL Error [42883]: 오류: round(real, integer) 이름의 함수가 없음" sum (unit_price) over ( order by unit_price)의 자료형이 real인 것은 확인이 되는데 왜 에러가 나는걸까요?
author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..
안녕하세요 선생님, 강의 너무 재밌게 복습하고 있는 수강생입니다. 질문이 있어서 글을 씁니다. " 스칼라 서브쿼리 실습 - 01 " 강의 07:10 에서 아래 쿼리에 문제가 있다고 알려주십니다. select a.*, (select avg(sal) from hr.emp x where x.deptno = a.deptno) dept_avg_sal from hr.emp a; 그리고 그 과정에서 M:N join 결과물을 예로 들어서 왜 그런 지를 알려주시는데요, 여기서 의문이 생겼습니다. "스칼라 서브쿼리 실습 - 01 " 바로 이전 강의에서 스칼라 서브 쿼리는 메인 쿼리의 각 레코드 별로 연산이 수행된다 는 걸로 기억합니다. 그 말은... (select avg(sal) from hr.emp x where x.deptno = a.deptno) 위 스칼라 서브쿼리가 hr.emp 테이블의 각 레코드 별로 연산이 수행된다는 걸로 전 이해합니다. 그런데 07:10 때는 이걸 조인의 결과물로 설명하시면서 좋지 않은 쿼리라고 알려주십니다. 각 레코드 별로 연산을 수행한다고 생각하면 사실 저 서브쿼리가 잘못된 쿼리 같지가 않다고 저는 생각하는데, 그게 아닌가요? 조인을 통해서 스칼라 서브쿼리를 좋은지 아닌지를 판단해야 되는 건가요??
안녕하세요. 강사님. 평소 궁금하고 잘 안됬던 부분들을 학습할 수 있어서 열심히 수강중입니다. 기초적인 질문이나 개념을 잡기 위해 문의드립니다. select to_date ('2022-01-01', 'yyyy-mm-dd'); select to_date ('2022-01-01', 'yyyy/mm/dd'); select to_date ('2022/01/01', 'yyyy/mm/dd'); select to_date ('2022/01/01', 'yyyy-mm-dd'); 위 네가지 모두 결과값으로는 to_date 2022-01-01 로 나오던데요. to_date() 라는 것은 구성에 대한 부분일 뿐 date에 대한 db관리나 출력시의 포맷과는 무관한 것인가요??
안녕하세요 나도코딩님 오늘도 열심히 공부중인 학생입니다 ㅠㅠㅠ 복수전공 과목 중 자바로 배우는 자료구조를 수강중인데 사전에 자바 공부도 없이 듣는 수업이라 도통 무슨 소린지 이해가 가질 않네요.. 그래서 현재 고급편 결제하고 섹션9 추상클래스 까지 들은 상태인데 뒤로 갈수록 내용이 어려워져서 복습한다고 속도가 너무 늦어지는 상태에요.. 자료구조 내용을 이해하려면 일단 어떤 파트를 필수적으로 빨리 들어야 하고 어떤 파트는 빼도 되는지 알려주실 수 있을까요??ㅜ 답변 주시는데 도움이 될 지 모르겠지만 교재 한 챕터에 {자바 데이터 타입(기본타입, 참조타입), 제어문(조건문,반복문), 메소드(호출문,메인), try문} 이렇게만 존재하긴 하는데 중간중간 책에는 없는 추상클래스, 입력문 같은 파트도 보여서 감이 안잡히네요..
안녕하세요~ 강사님, 인터페이스(후반전) 강의를 듣고 있는데, 왜 인터페이스 변수를 만드는지 이해가 가지 않습니다. 수업 내용에서 FactoryCam이 인터페이스 Detectable과 Reportable을 구현하여 인터페이스에 있는 메소드를 FacstoryCam에서 구현해야한다는 것은 이해했습니다. 그리고 다른 클래스의 detect 메소드와 report 메소드를 호출하는것이라서 public void detect(){detecter.detect();} 이고, detecter은 객체이잖아요. 여기서 막힙니다. 이 객체랑 인터페이스 변수랑 무슨 상관인지? FactoryCam 의 인터페이스 변수를 생성해서 변수에 값 저장하는 걸로 하면 되지 않는지? 왜 인터페이스 변수를 선언해서 거기다가 값을 저장하는지, 잘 이해가 안 됩니다.... ㅠㅠ 그리고 추가로, 인터페이스로 다중 상속이 가능하다고 하셨는데, 수업 내용 중 어떤 것이 다중 상속이 되고 있는지 파악하기가 어렵습니다. 혹시, 다른 클래스의 메소드를 호출할 수 있는 부분때문에 다중 상속이 가능한 것인가요? 후반부로 갈수록 어렵네요 ㅠㅠ