월 26,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Jpa 데이터베이스 매칭 관련 질문입니다.
안녕하세요 강사님.인프런 스터디 과제 7일차 문제 1번 jpa 코드로 변환하던 중 warehousingDate 컬럼 부분에서 문제가 발생하였습니다.Fruits의 테이블 컬럼 이름은 warehousingDate 입니다. { "name":"바나나", "warehousingDate":"2024-02-25", "price":7000 }jpa 코드로 바꾼 후 위에처럼 post 하였더니 아래와 같은 결과가 나왔습니다.Unknown column warehousing_date in field list라고 에러가 뜹니다. 처음에는 @Column(name="warehousing_date") 을 붙이지 않아서 에러가 나는 줄 알고 @Column(name="warehousing_date") 을 붙이고도 진행하였더니 똑같은 에러가 발생하였습니다.그래서 Fruits 앤티티 warehousingDate 변수명을 warehousing_date로도 변경을 해봤더니 똑같은 에러가 발생하였습니다. Fruits 엔티티는 아래와 같습니다.@Entity public class Fruits { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Column(name="warehousing_date") private LocalDate warehousingDate; private long price; @Column(nullable = true) private boolean sales; public Fruits() { } public Fruits(String name, LocalDate warehousingDate, long price, boolean sales) { this.name = name; this.warehousingDate = warehousingDate; this.price = price; this.sales = sales; } public String getName() { return name; } public void setName(String name) { this.name = name; } public LocalDate getWarehousingDate() { return warehousingDate; } public void setWarehousingDate(LocalDate warehousingDate) { this.warehousingDate = warehousingDate; } public long getPrice() { return price; } public void setPrice(long price) { this.price = price; } public boolean isSales() { return sales; } public void setSales(boolean sales) { this.sales = sales; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } }컨트롤러 코드는 아래와 같습니다.@PostMapping("/api/v1/fruit") public void fruitInformation(@RequestBody FruitCreateRequest information){ fruitService.saveInformation(information); }서비스 코드는 아래와 같습니다.private final FruitJpaRepository fruitRepository; public FruitService(FruitJpaRepository fruitRepository) { this.fruitRepository = fruitRepository; } public void saveInformation(FruitCreateRequest request){ fruitRepository.save(new Fruits(request.getName(),request.getWarehousingDate(), request.getPrice(), request.getSales())); }RequestDto 코드는 아래와 같습니다.public class FruitCreateRequest { private String name; private LocalDate warehousingDate; private long price; private boolean sales; @JsonIgnore private Long id; public String getName() { return name; } public void setName(String name) { this.name = name; } public LocalDate getWarehousingDate() { return warehousingDate; } public void setWarehousingDate(LocalDate warehousingDate) { this.warehousingDate = warehousingDate; } public long getPrice() { return price; } public void setPrice(long price) { this.price = price; } public void setSales(boolean sales) { this.sales = sales; } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public void setId(long id) { this.id = id; } public boolean getSales(){ return sales; } } 혹여나 제가 놓친 부분이 없는 지 확인해 주시면 감사하겠습니다. 그리고 fruits 컬럼명은 warehousingDate 라 적었는 데 hibernate는 warehousing_date과 매칭할려는지 알고싶습니다.질문이 서투른 점 양해바랍니다..
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
entity 객체에 기본생성자를 넣어주는 이유
안녕하세요User객체에 기본생성자를 넣어야 작동하는 이유가 궁금합니다혹시 필드에 아무값도 넣지않을때를 대비해서 기본생성자를 사용하는건가요?
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
자바 스프링부트 버전 선택
스프링부트 버전이 2.7x 버전은 없는데 무엇으로 선택해야 하나요?
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
오류로 인해 실행 안됨
이 에러가 발생합니다.설정에서 Gradle을 jdk로 바꿔봤습니다.아래 3가지를 선택 취소 후 다시 선택했습니다.java 폴더 -> Sources Tab 선택test 폴더 -> tests Tab 선택resource 폴더 -> resource Tab 선택그래도 해결이 안되기에 이렇게 글을 적습니다. 해결: 우측 상단에 Main으로 되어있었는데 이것을 LibraryAppApplication으로 바꾸니 해결되었습니다.
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Configuration에 대해서 궁금합니다
안녕하세요@Configuration 과 @Bean은 세트라고 하셨는데요제가 프로젝트를 하나 하고있는데요implements WebMvcConfigurer를 구현하면메서드에 @Bean을 안붙여도 잘 동작을 하는데요 이유가 뭔지 궁금합니다..
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
아직도 시작을 못하고 있어요,,,,,
다음과 같은 오류가 나와서 어떻게 해야할 지 모르겠네요 따로 건든건 없는데요... A problem occurred configuring root project 'library-app'.> Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1 > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but: - Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 11) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 11) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.5')* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
자바 버젼이 안맞는거같은데 어떻게 해야할지 모르겠네요 ㅜㅜ
No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but:위와같은 오류가 나오면서 오류가 나서 그레이들이 멈추는데 해결을 못해서 강의 시작을 못하고 있어요 ㅠㅠ 어떻게 해야하나요
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml 포트번호
spring: datasource: url: "jdbc:mysql://localhost:3307/library" username: "root" password: "kimdh991234@" driver-class-name: com.mysql.cj.jdbc.Drivermysql을 설치할때 3306포트가 사용중이어서 설치가안되어서 3307로 포트를 설정하고 설치했더니 기존코드에서는 에러가 발생했습니다 그래서 포트번호를 달아줬더니 에러없이 동작하는데 3306포트로 동작하게 되면 생략이 가능한건가요?mysql 기본 포트세팅이 3306이어서 그런걸까요?
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제 프로젝트 삭제와 프로젝트 실행 오류
5강을 듣다가 제 화면과 강사 선생님과 화면이 달라서 프로젝트를 삭제 했습니다. 그런 뒤 다시 프로젝트를 오픈했는데 저런 화면이 뜨면서 실행되지 않고 오류가 생깁니다.프로젝트를 삭제하고 캐쉬도 삭제 하고, 심지어 인텔리제이도 삭제해봤는데 여전히 저런 화면이 뜹니다. 어떻게 해야되나요?
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의 내용을 따라가던 도중에 의문이 생겨서 질문드립니다.
안녕하세요. 태현님, 좋은 강의 감사합니다. 오늘 BookService 코드를 같이 타이핑하던 도중 의문이 생겼습니다. 뭔가 점점 BookService에서 의존을 주입받는 레포지토리가 점점 늘어나고 있음이 그 원인이었는데요. 보통 커머스 서비스의 앱에서 주문 상세 버튼을 누르면 다음과 같은 정보들이 나오는데요.가게 정보메뉴 정보,주문 자체의 정보(주문 일시, 주문번호)메뉴와 옵션 선택 정보쿠폰 적용 주문자의 개인정보(주소 및 연락처)등등.. 물론 내부적으론 어떻게 해결이 되어있겠지만 벌써 주문 상세를 보여주는 기능을 처리하기 위한 서비스에서 엄~청 많은 레포지토리를 가져와야할 것 같은? 느낌이 듭니다. 이런 경우엔 의존 주입을 받는 객체의 갯수의 상한선을 따로 두고 개발하실까요?아니면 이런 문제를 해결하는 방법론 같은 것이 이미 있나요?혹은 제 생각엔 짤막하게 배운 디비 지식으로 주문과 같은 것은 반정규화로 테이블을 합쳐서 그 테이블과 대응되는 하나의 레포지토리로만 가져오나요?감사합니다.
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
이미지 조회 404
리액트로 이미지를 조회하려는데 자꾸 404 Not Found가 반환되요.포스트맨으로 동일한 조건으로 요청을 하면 제대로 이미지가 반환이 되네요. async function getIamge(filename){ await axios.get(`http://localhost:8080/imageFiles/${filename}`) .then((action)=>{ let data = action.data; let copy = [...images,data]; setImages(copy); }) .catch((error)=>{ console.log('서버 응답 코드:', error.response.status); console.log('서버 응답 데이터:', error.response.data); console.log('서버 응답 헤더:', error.response.headers); }) }이런식으로 요청을 했습니다. img태그로 직접 엔드포인트로 요청을 보냈을 때도 똑같은 상황입니다. @GetMapping("/imageFiles/{filename}") @CrossOrigin(origins = "*") public ResponseEntity<Resource> downloadExecute(@PathVariable("filename") String filename) throws IOException { log.info("Full Path = {}", fileDir + filename); String str = URLEncoder.encode(filename, "UTF-8"); Path path = Paths.get(fileDir + filename); Resource resource = new InputStreamResource(java.nio.file.Files.newInputStream(path)); System.out.println("resource : "+ resource.getFilename()); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_TYPE, "application/octect-stream") .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+str+";") .body(resource); }이미지를 보내주는 서버측 엔드포인트입니다. @Configuration public class CorsMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") //.allowedOrigins("http://localhost:3000") .allowedOrigins("*") .allowedMethods( HttpMethod.GET.name(), HttpMethod.POST.name(), HttpMethod.HEAD.name(), HttpMethod.PUT.name(), HttpMethod.DELETE.name() ); registry.addMapping("/imageFiles/**") .allowedOrigins("*") .allowedMethods( HttpMethod.GET.name(), HttpMethod.POST.name(), HttpMethod.HEAD.name(), HttpMethod.PUT.name(), HttpMethod.DELETE.name() ); } } cors설정도 해봤는데 결과는 똑같았습니다. 뭐가 문제일까요 ㅠ
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
PATCH와 PUT의 차이점
14강 유저 업데이트 부분에서 PATCH가 아닌 PUT을 사용하는 이유가 궁금합니다!! 제가 알기로는 PATCH는 일부 수정이 가능하고, PUT은 완전 덮어쓰기라고 알고 있는데, PATCH가 아닌 PUT을 사용하는 이유가 무엇인가요?? 만약 PATCH 사용이 불가능한게 아니라 가능할 경우 코드가 어떻게 되는지도 궁금합니다! 항상 감사합니다!!
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 마지막 부분 질문 있습니다.
제가 람다식, 익명클래스, 제네릭에 대한 개념이 확실하게 안 잡혀서 코드이해가 너무 안 되길래 개념부터 다시 찾아보고 공부하고 있는데요 ㅠㅠㅠ 이렇게 공부하는 게 조금 과할 수 있지만 완벽하게 이해를 하고 넘어가고 싶습니다.제가 궁금한 점은query함수를 실행하면 sql이 적용된 결과데이터베이스 전체가 mapRow함수의 파라미터 rs로 들어가게 되는 것 같은데 데이터베이스의 자료형이 ResultSet인가요?rowNum 변수의 필요성입니다. mapRow메서드를 오버라이딩을 해줄 때 rowNum사용을 전혀 안 하고 있는 것 같은데, 어떤 값이 rowNum으로 들어가고 어떻게 작동하는 건가요?mapRow메서드의 반환값은 UserResponse객체 형태인데 결과적인 getUsers메서드의 반환값이 어떻게 List<UserResponse> 형태로 변환될 수 있나요? query함수의 역할인가요?감사합니다.
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JPA에 관련해서 현업 관련 질문이 있습니다.
간혹 유튜브 영상이나 ORM과 관련된 담론이 있는 글들을 보면 JPA의 속도 문제를 문제점으로 삼는 분들을 보았습니다. 그리고 JPA로는 한계가 오는 점들은 네이티브 쿼리를 사용해서 해결을 할 수 있다는 점, 그리고 태현님께서도 특정 상황에서는 JdbcTemplate을 사용해서 문제를 해결할 수 있다는 점을 강의에서 말씀 해주셨는데요. 하지만 그 '특정 상황'의 예시가 잘 떠오르지가 않는데 어떤 것이 있을까요? 배민의 영상에서도 동욱님은 JPA와 QueryDSL을 사용해서 몇 억건의 데이터도 잘 처리하셨고, 영한님께서도 책을 개정판을 내지 않는 이유로 이미 많이 성숙한 기술이라서 극적인 변화가 없는 기술이라고 하셨으며 어떤 유튜버분도 말씀하시길 'JPA라는 기술이 문제 자체를 일으킨다기 보단 개발자가 JPA에 대한 이해가 부족해서 문제가 발생한다.' 라고 하셔서 더 미궁속으로 빠집니다. 혹시 태현님께서도 이런 상황을 겪으신 적이 있으신지, 있다면 어떻게 해결하셨는지 궁금합니다!
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 yml 파일에서
yml파일 작성할 때 driver-class-name이 Cannot resolve class 가 cj부터 Driver까지 뜨네요.build.gradle의 의존성은 다음과 같구요, 아래 질문들 보고 Ctrl Shift N 해봤을 때 Driver.java 파일도 잘 있는데 이것 때문에 서버 실행이 안됩니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'mysql:mysql-connector-java:8.3.0' }
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
34강 orphanRemoval 관련 질문입니다!
orphanRemoval 을 걸지 않았을 경우책6을 삭제했으나, userLoanHistories를조회해보면 여전히 책6이 존재한다.orphanRemoval = true 을 걸었을 경우클린 코드를 삭제했더니조회시 사라졌다어째서 orphanRemoval을 걸어주지 않으면데이터베이스에 반영이 되지 않는건가요? @Transactional어노테이션으로 인해 트랜잭션이 시작될 때,영속성 컨텍스트가 시작되고,영속성 컨텍스트의 4대 특징 중 하나인생성/수정 감지로 인해user 객체의 userLoanHistories 의 값에변경사항(removeOneHistory)이 발생하여자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는user테이블의 필드가 아니기 때문에,영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데orphanRemoval = true 를 걸어주면비로소 자신이 관리하는 field로 인식하는걸까요?원리가 너무 궁금해요.. 내용추가1)바로 다음 강의인 책 대출 리팩토링에선orphanRemoval 같은 옵션을 주지 않고도new userLoanHistory를 add한 내용대로 저장이 되는데,어째서 userLoanHistory를 remove하는것은orphanRemoval 옵션이 없으면데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User에서 userLoanHistories.add를 하든 userLoanHistories.remove 를 하든둘 다 User와 UserLoanHistory 와의 연관관계를 이용한데이터를 변경하기위한 접근같은데 ..add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2)returnBook과 loanBook , removeOneHistory의 차이점이 뭘까 고민해봤는데returnBook 과 loanBook 은UserLoanHistory라는 Entity에 접근하는 과정(loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다.이렇게 이해했는데 제가 이해한 내용이 맞을까요?생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ
- 미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
내장 톰캣에 대해 궁금한게 있습니다.
스프링부트에부터는 내장 톰캣을 사용하는거엔 익숙해져 있는데,과거에는 RedHat JBoss와 같은 외장 WAS들을 사용했다고 하던데 이로 인해 발생하는 단점 같은 것은 없을까요? 예를 들어 기술 지원을 더이상 받지 못한다던가.. 외장 WAS들이 가지고 있는 장점이 사라진다거나 성능의 차이같은 것은 없는지 궁금합니다. 검색을 해보았을 땐 내장 톰캣이 아파치 톰캣 개발자들도 내장 톰캣의 사용에 문제가 없다라고 했다던지, 성능 차이가 크지 않다는 자료들은 찾았는데 아직 여전히 스프링부트를 사용하지 않는 회사들이 많다고 알고 있습니다. 강의 내용처럼 이렇게 편리하다면 스프링부트의 버전업은 몰라도 스프링'만' 쓰는 회사들이 시스템을 스프링부트로 업그레이드 하지 않을 이유는 없을 것 같아서요! 친절한 강의 감사드립니다. 태현님!
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
수정이라는 작업을 할 때 PUT을 더 사용하는 이유가 있을까요?
HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다.이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다.좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강 삭제 기능관련 질문입니다..!!
UpdateUser 사용시deleteUser 사용시2024-02-10 21:46:30.786 ERROR 10012 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 2; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 2] with root cause오류코드를 보니 updateUser는 findById의 결과값이 고유하므로 문제가 일어나지않는데, deleteUser는 findByName으로 유저를 찾기때문에 같은 이름이 존재하면 결과값이 고유하지않으므로 오류가 발생하는거 같은데, (엄준식이 2명존재) 처음부터 Id 값을 받아오거나 생성시에 같은 이름을 못만들게 막는거 말고는해결할 방법이 없을까요?
- 해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User 클래스에 @Getter사용시 컴파일 오류
User클래스의 getter들을 정리하고싶어서Lombok의 @Getter 어노테이션을 사용해봤는데컴파일 에러가 나요 ㅠㅠUser 클래스를 @Getter로 만든사진UserResponse 클래스가 getId/getName/getAge 메소드를찾지 못했다는 에러가 발생합니다.User 클래스에 Getter를 직접 만들어준 모습정상작동하는모습롬복은 컴파일 시점보다 빠르게 getter을 만들어주는게 맞는데,제가 모르는 JPA관련 체킹로직이 롬복이 getter을만들기전에 동작해서 오류가 발생하는걸까요?다른 class들은 @Getter관련 문제가 없었거든요..제 나름대로 왜 이럴까 + 해결방법을 고민해봤는데잘모르겠어서 질문남깁니다...질문입니다!! @Entity가 붙은 class 에는 @Getter 어노테이션을 사용할 수 없나요:? +추가)생성자 관련 어노테이션도 안되는것 같습니다.2024-02-10 20:44:49.142 ERROR 15448 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: No default constructor for entity: : com.group.libraryapp.domain.User; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com.group.libraryapp.domain.User] with root cause ///// @NoArgsConstructor(access=AccessLevel.PROTECTED) ///////////////////////////////////////// protected User() {}에러메세지에 No default construtor라는데 둘이 같지 않나요? 이거도 역시 직접 생성자를 만들어주니 문제없이 작동하네요.. 롬복이 문제인걸까요?