inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Querydsl Q클래스 생성 오류

해결됨

실전! Querydsl

plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral () } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt: $ { dependencyManagement.importedProperties [ 'querydsl.version' ]} :jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" testImplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' } tasks. named ( 'test' ) { useJUnitPlatform () } clean { delete file ( 'src/main/generated' ) } tasks. named ( 'bootBuildImage' ) { builder = 'paketobuildpacks/builder-jammy-base:latest' } tasks. named ( 'test' ) { useJUnitPlatform () } //querydsl 세팅 시 def querydslDir = " $buildDir /generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java. srcDir querydslDir } configurations { querydsl. extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations. querydsl } 인프런에서 질문 & 답변을 보고 gradle 설정했는데도 오류가 계속 발생됩니다. Build and run using : Gradle 로 변경하면 발생 되는 오류 입니다. 오류 : Attempt to recreate a file for type study.querydsl.entity.QHello

  • java
  • jpa
Jun 댓글 1 좋아요 0 조회수 3103

강의보고 토이프로젝트로 재고감소 낙관적락 기법 적용 질문

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

안녕하세요 강사님 강의를 보고 토이 프로젝트에서 주문 시 재고 감소 및 메뉴 주문량 증가 로직에서 낙관적락 기법을 적용해 보았는데요, 강의에서 해주신 내용 그대로 파사드 패턴 까지 적용을 해보면서 시도했는데 무한 루프가 돌았습니다. hikariCP pool을 40으로 설정해주니 그제서야 해결이 되었는데요, 강의에선 네임드락에서 커넥션풀을 지정해주었는데요 저는 낙관적락인데도 해당 설정을 해서 해결된 이유가 있을까요? @Service @RequiredArgsConstructor public class OrderService { @Transactional public Order orderWithOptimisticLock(Long memberId, LocalDateTime now) { Cart cart = cartRepository.findByMember(memberId); List<CartItem> cartItems = cart.getCartItems(); cartItems.stream() .map(CartItem::getMenu) .forEach(menu -> { decreaseStockWithOptimisticLock(menu.getId(), 1); increaseMenuOrderCountWithOptimisticLock(menu.getId(), 1); }); Money money = calculator.calculateMenus(cart.getMember(), cart.convertToMenus()); Order order = Order.createOrder(cart, money, now); return orderRepository.save(order); } public void decreaseStockWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.decrease(quantity); } public void increaseMenuOrderCountWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.increaseOrderCount(quantity); } } ``` @Component @RequiredArgsConstructor public class OptimisticLockStockFacade { private final OrderService orderService; public Order order(Long memberId, LocalDateTime localDateTime) throws InterruptedException { while (true) { try { return orderService.orderWithOptimisticLock(memberId, localDateTime); } catch (Exception e) { Thread.sleep(50); } } } } ``` public interface JpaMenuRepository extends JpaRepository<Menu, Long> { @NotNull @Lock(LockModeType.OPTIMISTIC) @Query("select m from Menu m where m.id = :id") Optional<Menu> findByIdForOptimisticLock(@NotNull @Param("id") Long id); }

  • java
  • spring
  • 동시성
하윤 댓글 2 좋아요 0 조회수 647

Array.sort 사용 구분

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

앞 문제에서 Collection.sort를 쓰면 문제에서 효율적이지 못하다는 댓글을 봐서 처음부터 Array.sort를 해서 정렬하는 방법을 생각을 못했는데 어떤 문제에선 사용하고 사용하지말고 구분이잘 안되는데 이럴땐 어떻게 하나요...

  • java
  • 코딩-테스트
이주용 댓글 1 좋아요 0 조회수 386

JION을 이용한 중복 IO 제거 사례 강의 관련 문의

해결됨

SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법

안녕하세요. 강의듣다가 궁금한사항이 있어 문의드립니다. 위 강의에서 SELECT 서브쿼리에서 동일 테이블 접근으로 인해 I/O 중복 발생하여 아래처럼 인라인뷰를 만들고 JOIN을 하면 테이블 중복 I/O가 발생하지 않는것을 이해했는데요. 그런데 SELECT절에 COUNT만 필요해서 스칼라 서브쿼리를 한번만 사용하게 되면 중복I/O가 발생하지 않기에 스칼라 서브쿼리를 쓰는게 성능상 문제가 없는걸까요? 중복I/O 발생과는 좀 다른 내용일수 있지만 강의 듣다가 궁금해서 문의드립니다. 답변주시면 감사하겠습니다.

  • sql
  • dbms/rdbms
장보현 댓글 1 좋아요 0 조회수 361

강의자료

미해결

시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL

혹시 강의자료로 사용하시는 ppt 자료를 받을 수 있을까요? 복습할 때 있으면 유용할거 같습니다

  • sql
  • dbms/rdbms
이준승 댓글 1 좋아요 0 조회수 762

sakila database sql 압축에 없다고 떠요

미해결

[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]

없다고 뜹니다..

  • python
  • sql
  • mysql
  • dbms/rdbms
  • 데이터-엔지니어링
dx 댓글 1 좋아요 0 조회수 416

수식 오류가 나요

미해결

[리뉴얼] SQL 베이스캠프

SELECT Country || City || Address FROM Customers 알려주신 대로 그대로 했는데 오류가 납니다ㅠㅠ

  • sql
  • dbms/rdbms
이지혜 댓글 2 좋아요 0 조회수 579

flush() 와 clear()

해결됨

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 스프링 데이터 JPA 가 지원하는 save를 호출하면 flush()가 나가는건가요 아니면 save를 하고 bulkAgePlus()를 호출하면서 bulkAgePlus() 에 있는 JQPL이 실행되서 flush() 가 나가는건가요 ? bulkAgePlus()를 실행하면 JPQL 실행이되고, JPQL 이 실행이 되면 flush() 가 호출이 되는데 이때 SQL쿼리문이 DB에 전송이대서 DB에는 업데이트가 되어있지만 영속성 컨텍스트는 업데이트가 안되기 때문에 clear()를 해주는게 맞는건가요 ?

  • java
  • spring
  • spring-boot
  • jpa
최재영 댓글 1 좋아요 0 조회수 483

Non Equi 조인과 Cross 조인 실습 강의 내용에 대해 질문드립니다

미해결

데이터 분석 SQL Fundamentals

선생님 안녕하세요 강의 잘 보고 있습니다 강의 중간(10:20~25초 사이)내용에 대해 확인하고 싶은 부분이 있습니다 수업내용중 아래의 sql로 질의할때 -- 직원 급여의 이력정보를 나타내며, 해당 급여를 가졌던 시점에서의 부서번호도 함께 가져올것. select * from hr.emp_salary_hist a join hr.emp_dept_hist b on a.empno = b.empno; record 4번 데이터의 deptno 값 30이 출력된다고 하셨습니다만 a.fromdate between b.fromdate and b.todate 위의 between 조건으로 조인해서 sql로 질의했을 때에 출력되는 결과물은 record 3번 데이터 deptno 값 20이 출력되는데, record 3번의 a.fromdate (1982-01-01)값만이 조인된 b.fromdate(1981-04-01) and b.todate(9999-12-31)의 범위에 해당되어 출력되는 인식인데 (제가 잘못 이해했을 수도 있습니다만... ) 어떻게 deptno값 30이 출력되는지가 궁금합니다

  • sql
  • postgresql
  • dbms/rdbms
INTAEK LIM 댓글 1 좋아요 0 조회수 377

데이터 관련 커리어에 관하여 질문드립니다.

해결됨

[SQL Quest] 실전 문제 풀이로 SQL 역량 강화 하기 (Basic)

안녕하세요. 현재 데이터 사이언티스트 및 엔지니어를 꿈꾸고 있습니다. 데이터 사이언티스트가 회사에 따라 일하는 업종이 다르지만, 제가 생각하기에 제가 원하는 직무는 데이터 분석에 가까운 것 같습니다. 게임업계의 N사의 경우 데이터 사이언티스트를 채용했으나, 추천시스템이나 이상탐지 등 모델을 개발하는 업무라 아무래도 학사 출신 보다는 석/박사 출신들이 많을 것 같다는 생각이 들었기 때문입니다. 머신러닝과 딥러닝 모델을 가져와서 쓰는 것은 가능하지만, 만드는 것은 또 다른 영역이었기에, 해당 부분으로는 꿈을 접게 되었습니다. 그래서 데이터 분석가 쪽으로 가자! 는 마음으로 Python외에도 SQL 공부를 지속적으로 해왔습니다. 문제는, 면접장을 가봤더니, 어떤 회사의 경우 SQL이 아닌 SAS 를 쓰는 경우도 있었고, 가장 크게 한계에 부딪쳤던 부분은, 서비스 지표의 문제점을 파악하고 다양한 가설 및 A/B 테스트로 서비스 개선을 해보신 분 (모바일 서비스 데이터 분석), 데이터 시각화 (Tableau 등 BI툴) 경험을 본다는 점입니다. SAS는 일단 너무 비싸기 때문에, 이건 혼자서 배울 수 있는 능력이 아니라고 판단해서, 제외했습니다. 데이터 시각화의 경우 Tableau는 혼자서 책을 찾아보면서 공부를 하는 중입니다. Q1. 서비스 지표의 문제점을 파악하고 다양한 가설 및 A/B 테스트로 서비스 개선을 해보신 분 이라는 이 부분이 저는 도대체 어떻게 신입이 키워나갈 수 있는지, 어떻게 공부를 하면 좋을지... 잘 모르겠습니다. 서비스 지표를 통해서 해당 데이터를 분석하는 건 할 수 있지만, 지표의 문제점을 파악한다? 가 와닿지가 않습니다. 마케팅 지표를 알아야, 해당 요건을 충족할 수 있을 것 같았지만, Q1을 해결하지 못해서, 데이터를 가지고 할 수 있는 일이 무엇이 있을까...를 생각해보던 중 Data Engineer라는 직무도 알게 되었습니다. Java SpringBoot 나 Django를 활용해서 웹을 개발한 경험도 있었고, Spark, Hive SQL에 대해서 공부를 했던 경험이 있었기 때문입니다. 그런데, 항상 공고에 등장했던 부분이었던 대용량 데이터 처리를 위한 데이터 파이프라인(수집/처리/분석) 개발 경험 이 발목을 잡았던 것 같습니다. Q2. 데이터 파이프라인(수집/처리/분석) 개발 경험 이 하둡 아키텍처나, K8S 내에서 트러블 슈팅 경험을 말하는 것인가요? 해당 부분을 해보려고 했으나, 문제는 하둡 아키텍처를 AWS로 구성하는데 비용이 엄청나게 들어서 엄두를 못냈습니다. 수집은 크롤링으로 했는데, Kafka도 언급이 있는 걸 보면, Kafka나 Flink와 같이 실시간 스트리밍 수집을 공부해야할까요? 아키텍처를 구성해야 할 것 같은데, 관련 지식이 없어서 문제입니다. 비전공자다 보니, 취업이 생각보다 너무 어렵게 느껴집니다. 이번 하반기는 유독 2차에서 많이 떨어졌네요.. 내년 상반기에는 좋은 소식이 있었으면 좋겠습니다. Q3. 추가로, 강사님께서 알려주신 부분을 공부하면서, 노션에 정리를 했었습니다. 노션에는 강사님께서 첨부하신 PDF자료는 일절 없고, 쿼리문과 제가 공부를 하면서 느낀 점이나, 어떻게 문제를 풀어야하는지 등을 정리했는데, 혹시 괜찮을까요? (노션이 홈페이지와 연동이 되어있다보니, 문제가 있다면 해당 부분은 개인 아카이브에 보관하겠습니다.) => 답변주신부분대로 테이블 조회(데이터 확인=> 이건 강사님께서 만드신 소중한 수업 자료이니 해당 부분은 제외) 부분을 제외하구 쿼리 부분만 기재해도록 하겠습니다.

  • sql
  • bigquery
  • sql-query
  • 데이터-리터러시
minsubrother 댓글 1 좋아요 1 조회수 406

산술연산에서 오류가 나요

미해결

[리뉴얼] SQL 베이스캠프

이렇게 계속 오류가 나요!

  • sql
  • dbms/rdbms
dudfkd28 댓글 2 좋아요 0 조회수 536

CRUD에 따른 ResponseDto를 보내는 유형 및 ResponseDto 구성 방식에 대한 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하십니까 영한님. 영한님 덕분에 JAVA Spring 기반 백엔드 개발의 시작을 할 수 있었고, 이제는 5개월 차 스타트업 백엔드 개발자로써 커리어를 시작하게 되었습니다. 현업에 와서는 오히려 취준생 때 보다 더 많은 고민을 하게 되느데요, 질문 1. 그중 최근에 CRUD의 각 상황별 API 응답을 어떻게 보내는게 적절할지, 질문 2. 그리고 ResponseDto를 어떻게 구성하는것이 적절할지에 대한 고민을 팀장님과 함께 하고있어서, 영한님의 생각을 여쭙고자 질문글을 올리게 되었습니다. 답변 해주시면 정말 감사할 거 같습니다! Q1. 생성, 조회 , 수정, 삭제 API의 응답을 각각 어떻게 보내시는지 여쭤보고 싶습니다. 가장 먼저 조회의 경우는 말 그대로 path의 Entity 및 관련된 Entity 정보를 조합하여 응답 DTO로 변환하여 보내고 있습니다. 그런데 나머지 Write Operation에 대한 응답을 어디까지 보내야 하냐가 이슈 입니다. 예를들면 엔티티의 생성의 경우 엔티티의 응답 DTO를 보내면 - 프론트에서 별도의 조회 API 호출 없이 바로 프론트가 화면에 뿌려줄 수 있으니깐 저는 생성의 경우에도 조회와 마찬가지로 Entity의 정보를 조합하여 응답 DTO로 변환하여 보내고 있었습니다. 그런데 이러한 부분이 Command Query Sperate 원칙에 어긋나는것 같아, 영한님께서는 혹시 생성한 Entity의 Key만 보내시는지, 아니면 Entity의 정보를 DTO로 변환하여 보내시는지 궁금합니다. 만약 Entity의 Id만 보내신다면 이후에 별도로 조회API를 호출해야 하고 그 또한 비용일텐데 이러한 부분은 어떻게 하시는지 여쭤보고 싶습니다. 이제 수정 API인데요, 제가 다룬 비즈니스 로직의 경우 수정 비즈니스 로직이 다양하고 , 각 비즈니스 로직의 경우 다뤄지는 Entity의 종류가 다른 경우였습니다. (중심 Entity는 동일하지만, 연관된 Entity를 누구까지 건드리냐의 차이) 그래서 하나의 통일된 응답으로 보내기 모호한 점이 첫 번째 이유이고, 애초에 수정 후에 프론트 화면에서 그 엔티티의 정보를 보여줄 필요가 없어서 라는 두번째 이유에 의해서 에초에 엔티티의 Id값도 보내지 않고 있었는데요, 이 수정 API의 응답을 영한님은 어떻게 진행하지는지 그 이유가 궁금합니다. 마지막으로 삭제의 경우는 정말, 프론트에게 보낼 응답이 없어도 되는 경우 라고 생각했는데요, 팀장님의 의견은 만약에 나중에 삭제한 Entity를 복구하는 요구사항이 추가되는것을 고려하여 Id 정도는 넘기자는 의견을 내어주셨습니다. 마찬가지로 삭제의 경우도 어떤식으로 수행하시는지 그 이유가 궁금합니다. Q3. 마지막으로 Entity의 ResponseDto의 필드를 어떤식으로 구성하시는지 궁금합니다 예를들면 저의 경우는 API는 프론트와 서버 간의 스펙이라고 생각하고, Entity의 단건조회의 경우는 단건 조회용 ResponseDto를, 전체조회의 경우는 전체 조회용 SummaryResponseDto를 별도로 만들어서 사용하고 있었습니다. 저희 팀장님 께서는 프론트쪽도 일을 해오시다가 , 백엔드쪽 분야로 전향하신 케이스 인데요, 그렇다 보니 어떻게 해야 프론트의 생산성이 올라가는지를 고려하시는 분이셨고, 팀장님의 생각은 서버에서 넘겨주는 응답에 일관성이 있어야 그 응답을 사용하는 프론트 측도 학습이 되고 놓치는 부분 없이 생산성이 올라간다 는 의견이셨습니다. 그래서 Entity별로 당장 사용하지 않더라도 가능한 모든 필드를 담은 ResponseDto를 하나만 만들고, 해당 ResponseEntity의 조합으로 각 API별 응답 Dto를 만들어서 사용하면 , 프론트 측 에서는 일관성 있는 응답값을 사용할 수 있다는 의견이셨습니다. 물론 이 방법이 네트워크 패킷의 양을 쓸데없이 증가시킨다는 것을 알고 계시면서도, 생산성에 큰 영향을 미치는 부분이라고 생각하셨습니다. 예를들어 다음과 같이 각 Entity의 응답 Dto의 조합별로 API의 ResponseDto를 만들 수 있습니다. ResponseDto{ UserDto{ id : 1, name : “aaa” … // User엔티티의 거의 모든 필드 } ItemDto{ id : 2, name : “bbb”, … // Item엔티티의 거의 모든 필드 } } 저는 이러한 부분에 대해 생각해 본 적이 없이, 그냥 제가 “해당 API를 호출하는 화면에서 필요한 정보들만을 담아 (혹은 여러 화면에서 쓰인다면 여러개를 고려) ResponseDto를 각각 만들어서” 넘겼는데요 영한님께서는 이러한 ResponseDto를 구성하는 부분에 있어서 상황별로 필드를 재구성 하여 ResponseDto를 정의하여 사용하시는 편 인지 (SummaryResponseDto 등의 별도 Dto에 사용될 Entity의 필드들을 풀어서 정의하시는지) 아니면 생산성을 고려하여 각 Entity별 Dto를 만들고, 이들을 조합하여 ReponseDto를 정의하시는 편 이신지 , 혹은 다른 규칙이 있으신지 궁금합니다. 물론 그렇다고 , 팀장님의 의견에서 전체조회시 사용하는 DTO와 단건조회시 사용하는 DTO가 동일하더라도, 전체조회 후 단건조회를 할때 단건조회 API를 호출하지 말고 기존 Front가 가지고 있는 값을 쓰지는 말자는 의견 이십니다 (단건조회API는 별도로 호출해야 한다) 그저 핵심은 프론트가 다루는 ResponseDto의 일관성을 위해서 입니다 (결론은 생산성을 위해) 긴글 읽어주셔서 감사합니다. 항상 건강하셨으면 좋겠고, 다음 강의들도 손꼽아 기다리고 있습니다!

  • java
  • spring
  • spring-boot
  • jpa
요니 댓글 3 좋아요 0 조회수 1442

3분 20초 FORMAT_DATE 반환 타입에 관하여

해결됨

[SQL Quest] 실전 문제 풀이로 SQL 역량 강화 하기 (Basic)

[기타 질문] 선생님 3분 20초 쯤에, FORMAT_DATE('%Y', date)에 대한 주석 문에 대해서 int형이 아닌 String형으로 표시를 해야 할 것 같습니다. date between '2022-01-01' and '2022-12-31' -- 2022 -- date between '2022-01-01' and '2022-12-31' EXTRACT(YEAR FROM date) = 2022 -- 2022 -- EXTRACT(YEAR FROM date) -> int로 나온다. -- EXTRACT(날짜 단위 from 날짜 필드) FORMAT_DATE('%Y', date) = '2022' -- 2022 선생님께서 알려주신 3가지 방법으로 모두 적용해보니, SELECT EXTRACT(YEAR FROM date), FORMAT_DATE('%Y', date) FROM project.daily_play WHERE (EXTRACT(YEAR FROM date) = 2023 AND mode = 3) OR (EXTRACT(YEAR FROM date) = 2022 AND mode = 4) 이런 식으로 나오더라구요. EXTRACT의 반환 값은 int형(숫자형)이 나오고, FORMAT_DATE이나 FORMAT_DATETIME의 경우 반환 값은 String 형태로 나오는 것 같습니다.

  • sql
  • bigquery
  • sql-query
  • 데이터-리터러시
minsubrother 댓글 1 좋아요 1 조회수 482

데이터베이스에 맞게 연결했는데, BAD-REQUEST라고 나옵니다..

해결됨

[SQL Quest] 실전 문제 풀이로 SQL 역량 강화 하기 (Basic)

data-whiz에 첨부해주신 json파일을 강의에서 언급한 부분대로, Database를 Connect했는데, 자꾸 Connect error가 뜨네요.. 어떻게 해야할까요 [기타 질문] 쿼리 작성 질문 외 강의에서 사용된 용어 등 다양한 질문들도 환영합니다. 편안하게 질문 부탁드립니다🙋‍♂️🙋‍♀️

  • sql
  • bigquery
  • sql-query
  • 데이터-리터러시
minsubrother 댓글 1 좋아요 0 조회수 326

왜 order by를 안넣으면 오류가 뜰까요?

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. top earners 문제에서 차근차근 따라하던 중에 자꾸 오류가 떠서 질문 드립니다. order by를 빼면 자꾸 이런 오류가 뜨고 ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY earnings DESC' at line 5 포함을 하면 잘 실행이 됩니다... 그리고 *에 대해서 헷갈리네요 나는 earnings를 기준으로 그게 몇명인지 카운트할거야 -> *를 쓰면 raw데이터에서 그 값에 해당되는 컬럼의 개수를 세주는 것인가요?

  • sql
noah96 댓글 1 좋아요 0 조회수 481

jpql 엔티티 인지 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 일단은 해결 했습니다. findAllString 이용하는데 Order를 얘가 모르는 거 같아서.. String jpql = "select o From jpabook.jpashop.domain.Order o join o.member m"; 이렇게 패키지경로까지 다 명시해줬더니 인지를 하더라구요.. 안 그러면 org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Order' at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1960) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] ............... 얘가 이렇게 Order 인지 못한다고 오류가 뜹니다.. 원래 엔티티는 그냥 @Entity 등록 하면 알아서 인지 되는걸로 알고 있었는데.. 왜 이런 걸까요? package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status; public void changeMember(Member member){ this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } private void setOrderDate(LocalDateTime orderDate) { this.orderDate = orderDate; } public void changeDelivery(Delivery delivery){ this.delivery = delivery; delivery.setOrder(this); } private void setStatus(OrderStatus status) { this.status = status; } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.changeMember(member); order.changeDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } public void cancel(){ if(delivery.getStatus() == DeliveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { // orderItem.getItem().removeStock(orderItem.getCount()); orderItem.cancel(); } } public int getTotalPrice(){ int totalPrice = 0; for( OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice(); } return totalPrice; } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
궁금이 댓글 1 좋아요 0 조회수 2889

w3school 오류

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

알려주신대로 하나도 틀림없이 썼는데도 결과값이 계속 저렇게 뜹니다. SELECT * FROM products와 같은 간단한 쿼리문에는 오류가 발생하지 않더라고요. 어떤 문제가 있을까요?

  • sql
청귤아이스티 댓글 3 좋아요 0 조회수 705

COUNT를 쓰는 이유가 궁급합니다!

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

안녕하세요, 쿼리문을 작성하다가 궁금한 점이 생겨서 글을 남깁니다. 기호 *는 컬럼의 모든 내용을 가지고 온다는 뜻으로 알고 있습니다, SELECT * 처럼요. 근데 이 쿼리문에서는 COUNT(*) 이라고 작성을 했을 때 earnings라는 컬럼의 모든 경우만 보여주는 이유는 GROUP BY 때문이라고 보면 될까요? 혹시 질문 자체에도 오류가 있다면 알려주시면 감사하겠습니다!

  • sql
청귤아이스티 댓글 1 좋아요 0 조회수 427

[14강 도로명 주소db 구축(2)]관련

미해결

공공데이터 CSV 파일을 이용해 테이블 만들기

안녕하세요. 평소에 궁금했던 분야였고 업무에 활용하고 싶었는데 아무래도 sql 초급수준이다 보니 어떻게 접근을 해야 할지 몰랐는데 본 강좌가 무척 도움이 되었습니다. 이에 감사드리며 다소 기초적일 수 있는 질문 두가지를 드립니다. 아무리 생각해도 제 수준에서는 알 수가 없어서요. ㅡㅡ; 도로명주소db 활용방법 중 도로명코드의 update 쿼리문 중, rownum=1 을 사용하는 이유는 뭔가요? 어차피 where 조건으로 B.도로명코드=A.도로명 코드 AND B.읍면동일련번호 = A.읍면동일련번호 로 하면 한행만 나오지 않나요?? 간단히 쿼리문으로 조회를 해봤는데요. 조건상 1개의 행만 나와야 할 거 같은데 두개가 나오는 이유를 모르겠습니다. ( 23.10월 주소db 전체분 을 반영하였습니다.)

  • sql
  • mariadb
  • heidisql
류재안 댓글 2 좋아요 1 조회수 464

인기 태그

인프런 TOP Writers

주간 인기글