좋은 강의 감사합니다. 조회 v3.1에서 to One 관계는 모두 페치 조인하고 나머지 컬렉션은 지연로딩을 유지했을때 다음과 같은 에러가 발생합니다. query specified join fetching, but the owner of the fetched association was not present in the select list 고심하던 중 @Query부분을 value 와 countQuery로 나눠어서 처리 한 결과 정상적으로 조회 됬습니다.(Spring Data Jpa사용) 예) @Query(value = "select u from User u join fetch u.store s", countQuery = "select count(u) from User u") Page<User> findAllUser(Pageable pageable); 꼭 countQuery를 사용해야 하는지 궁금합니다.
john 님 안녕하세요? 좋은 강의 재밌게 잘 들었습니다. 강의를 참고해서 간단한 웹 페이지를 만드려고 하는 중입니다. antd 를 가져다가 메뉴 바를 만드는 부분이 따로 강의에서 다루고 있지 않으셔서 깃허브에 있는 boiler-plate 를 받아서 확인해보고 있는데요. 아무래도 제가 이해하고 해보는게 중요할 거 같아서 antd 홈페이지의 메뉴 바 예제를 확인 중입니다. https://ant.design/components/menu/ 위 링크에서 예제를 보고 있는데 다 훅이 아닌 클래스형으로 작성했더라구요. 혹시 제가 찾지 못한 hook 스타일 document가 있는지 궁금합니다. 그게 아니라면 class 형 스타일 예제 코드를 john 님이 고쳐서 적용한 건지요? 아직 리액트가 익숙하지가 않아서 여쭤봅니다!
안녕하세요 강사님. Update구현 : state 변경중간까지 따라해서 작동이 다 되었는데 7분이후에 concat 이 나오는 부분에서 ( 제 생각에는 이부분은 이전 강의에서 이미 변경이 되었다고 생각되는데) 동영상에 나오는대로 코드를 따라 했는데, 이후에는 에러가 발생하면서 , 기존 디폴트로 주었던 id :2 ( title:css 와 desc : 내용) 갑을 갖고 getContent 부분으로 이동한후에 무한루프에 빠져버리는 것 같습니다. 이 부분 동영상을 계속 보긴 했는데 어느부분에서 잘못된건이지 찾을 수가 없네요. 혹시 update 구현부분에 해당 하는 UpdateContent.js 를 갖고 계시면 혹시 보내주실 수 있는지요? 아무래도 비교해봐야 할것 같습니다. 좋은 강의 감사합니다
indx.html을 /src/main/resourcee/static/index.html을 넣어도 못찾네요 hello예제에서는 "template might not exist or might not be accessible by any of the configured Template Resolvers" 로 나오네요 경로가 차이가 있는건지 모르겠습니다. 아래는 grandle 설정입니다 어떤 문제가 있는건지 모르겠습니다. plugins { id 'org.springframework.boot' version '2.1.16.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 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' }
안녕하세요 영한님 올려주시는 강의를 들으며 JPA와 queryDsl을 공부중 입니다. 좋은 강의 감사합니다 :) 이것저것 해보는 과정중에 궁금증이 생겨 질문 드립니다. 먼저 Team 과 Member 엔티티를 단순화 해 보았습니다. @Entity public class Team { @Id @GeneratedValue @Column(name = "team_id") private Long id; private String name; private Integer rank; @OneToMany(mappedBy = "team") List<Member> members = new ArrayList<>(); } @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; } (질문 1) Team과 Member는 서로 Lazy로 설정해 두었는데요 (Team에 rank 필드를 추가해 보았습니다.) 만약, Team을 조회 할때는 항상 Member가 필요 하다고 가정을 한다면(fetchJoin) rank가 5이상인 Team을 조회를 하면서 (Team은 항상 조회 -> left join) Team에 속한 Member의 나이가 20살 이상인 데이터를 즉시 조회 하고 싶다면 어떻게 작성 해야 할까요? 예를 들어 위의 조건은 sql로 아래와 같이 사용할수 있습니다. select * from team left join member on (team.id = member.id and member.age > 20) where team.rank > 5 위의 쿼리를 querydsl로 작성 한다면 아래와 같이 작성 가능 할것 같은데요 (fetchJoin 사용) QTeam team = QTeam.team; QMember member = QMember.member; JPAQUERY<Team> query = queryFactory.selectFrom(team) .distinct(); query.leftJoin(team.members, member) .on(member.age.gt(20)) .fetchJoin(); query.where(team.rank.gt(5)); 하지만 이를 querydsl로 작성하면 아래와 같은 오류가 발생합니다. witch-clause not allowed on fetched associations 찾아보니까 fetch 조인을 사용할 때는 on절을 사용할수 없다고 하더라구요.. 이런경우에 어떤 방법으로 해결할 수 있을까요? (질문 2) 아래 와 같이 조회를 했을때 QTeam team = QTeam.team; QMember member = QMember.member; JPAQUERY<Team> query = queryFactory.selectForm(team) .distinct(); query.leftJoin(team.members, member) query.where(team.name.eq("AAA") .and(member.age > 20)); Team의 데이터를 꺼내보면 ( name = 'AAA' ) 조건이 잘 적용되어 팀 이름이 AAA인 팀만 조회가 됩니다. 문제는 Lazy설정된 Member를 get() 할 때 인데요 Team.members를 get() 하면 Lazy 로딩이기 때문에 select 쿼리가 각각 다시 발생하는데 이때 ( age > 20 ) 조건이 적용 되지 않고 AAA Team에 속한 모든 Member가 조회 되어 집니다. 같은 트렌젝션에서 수행이 된다면 Member을 get()할때 ( age > 20 ) 조건이 적용될꺼라 생각했는데 조건 적용없이 모든 Member를 조회 해서 당황 스럽네요 이부분은 왜 조건문이 적용되지 않은 결과가 get() 되는 건가요?
안녕하세요. 영한님 강의 잘 듣고 있습니다. 감사합니다. Category Entity에서 parent와 child 만드는 것을 보고 게시판에서 댓글과 대댓글 관계를 생각해보았는데 댓글 Entity에서 대댓글을 List로 담고 똑같은 계층구조로 구현하는게 객체지향적인 설계가 맞을까요?
안녕하세요. 강의 잘 듣고 많은걸 배우고 있습니다. 현재 강의와는 안 맞을 수 있는내용이지만.. 많은 고민이 되어 질문드립니다ㅜ 예를들어 Team이라는 테이블이 있고, name이라는 Column이 Unique Index로 설정되어 있는 상태입니다. CrudRepository의 save 함수를 이용해 저장하고 있고 Custom Exception을 핸들링해서 "이미 저장되어 있습니다."라는 응답값을 반환하는것이 목표입니다. 현재 고민하고 있는 방법은 1. Insert 쿼리를 사용하기전에 이미 저장된 name이 있는지 Select 쿼리로 조회해 있다면 Custom Exception을 발생. -> 팀을 생성할때마다 Select 쿼리를 발생 2.try ... catch로 DataIntegrityViolationException을 잡아 Custom Exception 발생 -> DataIntegrityViolationException이 넓은 범위의 제약조건을 포함하고 있는 것으로 알고있어서 DuplicateKey ErrorCode로 잡아서 Custom Exception을 발생시켜야하나 싶습니다.. 혹시 실무에서는 위의 방법 중 하나 혹은 다른 방법을 사용해 어떤식으로 해결하는지 궁금합니다
안녕하세요 강사님. 5강 내용 대로 직접 코드를 작성하다 기본적인 부분에 문제가 생겨 질문 드립니다. 브라우저에 localhost:포트번호/hello 를 요청하면 404에러가 뜹니다....! Controller에서 @GetMapping("hello") 요청, addAttribude , return 값 에 오타가 없는지 확실히 살펴보았고 console에선 Application이 정상적으로 스타트 되었다는 출력만 나올 뿐 별 다른 에러가 나타나지도 않습니다. 제가 어느 부분을 더 살펴야 하는지 조언 부탁드리겠습니다. 코드나 추가 자료가 필요하시다면 답변 달아주시면 추가하여 수정하겠습니다. 감사합니다.
안녕하세요 게시판 이미지 업로드 질문 드립니다! 제가 같은 과정을 mariadb로 구현 중에 있는데, 오라클에서 연습했던 게시판 글쓰기는 완료하였지만, 이미지 업로드에서 업로드는 되지만 이미지를 못 불러오는 상황이 생겼는데, 무엇을 바꿔야 할지 잘 몰라서 질문 드립니다! 혹시 확인 가능하실까요?
안녕하세요, 먼저 강의를 잘 듣고 있는 학생 1인 입니다. ㅎㅎ 엔티티 클래스 개발2 강의 중 셀프로 양방향 연관관계 관련 질문입니다. Category 엔티티에서 // 자식입장에서 바라보는 부모 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") private Category parent; 위의 JoinColumn시 "category_id"가 아니라, "parent_id"로 작성해야 되는 이유를 알 수 있을까요? 셀프를 제외한 일반적인 양방향 연관관계에서 "연관관계 주인" 쪽에서 연관관계 거울 쪽을 Join할 때 연관관계 거울의 KEY를 명시해 주는데, 이와 마찬가지로 parent_id가 아닌 category_id가 아닌지... 궁금합니다. 실제로 바꿔서 했을 때, 오류가 발생했습니다...
안녕하세요.. 좋은 내용의 강의를 잘 듣고 있습니다. 현재 1. 스프링 시큐리티 주요 아키텍처 이해 4) 인증저장소( SecurityContextHolder , SecurityContext) 관련해서 2가지 질문이 있는데요. [질문1] 예제 설명에서 Main Thread 에서 자식 Tread 를 새로 생성해서, 테스트 하는 예제가 있는데요. 실제 업무에서, MVC 모델에서 자식 Thread 를 선언해서, 사용하는 예제를 그동안 못 봐서요. @Controller 에서 @Service 를 호출하고, 대부분 처리하는 방식인데요. 자식 쓰레드를 만드는 패턴은 실제적으로 어느때 사용하나요? [질문2] 기본 설정이 strategyName = MODE_THREADLOCAL 인데요. 자식 쓰레드가 Authentication authentication = SecurityContextHolder.getContext().getAuthentication() 로 접근할때는 안 되지만, 세션으로 get 으로, 호출하면, 같은 WAS 세션에 존재함으로, authentication 정보를 가져올 수 있는 건 아닌지요? 개인적으로 2가지 문의사항이 있어서, 질문드립니다. 감사합니다.
굳이 컨트롤러에 MemberForm을 만들 이유가 있나요? 그냥 MemberController에서 아래처럼 멤버를 바로 받아올 수는 없는건가요? 만약에 멤버폼을 반드시 이용해야하는 것이라면 MemberForm이라는 클래스는 어떠한 어노테이션도 없이 순수 자바코드인데 어떻게 폼에서 name값을 받아와 setName을 해주는지 궁금합니다. public String create (Member newMember){ memberService.join(newMember); return "redirect:/"; }
안녕하십니까 강사님! 활용1편을 정독하고 jpa기본을 다지기위해 공부중인 학생입니다! 항상 좋은강의 해주셔서 정말 감사합니다 강사님 덕분에 공부하는게 즐겁습니다ㅎㅎ 임베디드 타입과 @MappedSuperclass중에 뭘써야할지 저도 궁금했었는데 다른분이 똑같은 질문을 올려서 그걸 보고 다른 궁금한점들이 있어서 여쭤보려합니다. 1. @MappedSuperclass는 공통적으로 많은 클래스에 공통항목을 적용할때 써야하고 임베디드 타입은 타입별로 사용될 메서드들이 나뉘어져야 할때 사용하면 되는건가요?! 어느 경우에 어떤걸 쓸지 머리속에 딱 정리가 되었으면 하는데 두 경우가 많이 헷갈리는것 같습니다ㅜ 2. 또한 자바에서는 다중 상속이 안되는데 MappedSuperclass로 상속을 써버리는게 괜찮은건지 궁금합니다! 3. 활용1편에서 Address 설계를 임베디드로 하셨는데 MappedSuperclass를 안쓰신 이유가 궁금합니다! 4. 다른 답변의 댓글에서 결국에는 임베디드와 @MappedSuperclass는 상속과 위임의 차이밖에 없다고 하셨습니다! 그리고 JPQL 쿼리 때문에 상속을 선택하신다고 하셨는데 그러면 앞으로 메서드가 타입별로 나뉘어져야 할때 빼고 다 @MappedSuperclass만 써도 되는건지 궁급합니다! 막 궁금한걸 치다보니까 질문이 4개나 되었습니다ㅜ 혹시 질문이 많아서 답변하기에 불편하시다면 죄송합니다..
안녕하세요. 강의 재미있게 잘 듣고 있습니다! 다름이 아니라 며칠째 해결해보려고 올려두신 github 소스코드와 비교하며 해결해보려고 했으나 좀처럼 해결이 되지 않아 질문 드립니다. 댓글 기능 (3) SingleComment의 약 15분 경에 해당하는 댓글 리스트를 console에 찍어내는 것까지는 성공했습니다. 이를 화면에 출력하고자 하는데 댓글 내용은 잘 나오지만 댓글 작성자의 이름과 프로필 사진이 나타나지 않는 문제가 발생하였습니다. 출력된 에러 메세지는 다음과 같습니다. console.log로 props.comment.writer.name을 출력하면 잘 나오기는 하던데 어떤 부분이 문제인지 알 수 있을까요?? https://github.com/coding-Benny/react-youtube-clone
안녕하세요 강사님, 강의 내용대로 진행을 했을 때 ide에선 정상적으로 화면이 출력되나! 빌드를 해서 실행하면 templates path를 못찾는다는 에러가 발생합니다ㅠㅠ Gradle clean build 도 해봤는데 동일하네요 어떻게 해결할 수 있을까요? 아래는 나오는 오류입니다. cannot find template location: file:src/main/resources/templates/ (please add some templates or check your thymeleaf configuration)
안녕하세요. 강의내용듣다가 궁금한 점이 생겨 질문드립니다^^ 예를들어, JPA의 DDL 자동생성 기능을 이용하지않고 flyway 같은 데이터베이스 migration 관리 툴로 스키마를 관리하는 상황에서, name컬럼이 unique 제약조건이 걸려있을때 실무에서는 해당 필드의 어노테이션으로 unique true나 길이제한 같은 제약을 보통 명시해주나요? 아니면 DDL 자동생성을 이용하지 않는상황에서는 딱히 명시해주지 않는 경우가 많나요?