Reputation: 1
Feedback.java:
package org.sglnu.feedbackservice.domain;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Table(name = "feedback")
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Feedback {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private Long eventId;
private String content;
}
FeedbackResponse.java:
package org.sglnu.feedbackservice.dto;
import com.querydsl.core.annotations.QueryEntity;
@QueryEntity
public record FeedbackResponse(Long id, Long userId, Long eventId, String content) {
}
FeedbackController.java
package org.sglnu.feedbackservice.controller;
import com.querydsl.core.types.Predicate;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.sglnu.feedbackservice.dto.FeedbackRequest;
import org.sglnu.feedbackservice.dto.FeedbackResponse;
import org.sglnu.feedbackservice.service.FeedbackService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/feedbacks")
@RequiredArgsConstructor
@Tag(name = "Feedback Controller", description = "Feedback API")
public class FeedbackController {
private final FeedbackService feedbackService;
@GetMapping
public Page<FeedbackResponse> findAll(Pageable pageable, Predicate filter) {
return feedbackService.findAll(pageable, filter);
}
@GetMapping("/{feedbackId}")
@ResponseStatus(HttpStatus.OK)
public FeedbackResponse findByFeedbackId(@PathVariable Long feedbackId) {
return feedbackService.findByFeebackId(feedbackId);
}
@GetMapping("/users/{userId}")
@ResponseStatus(HttpStatus.OK)
public FeedbackResponse findByUserId(@PathVariable Long userId) {
return feedbackService.findByUserId(userId);
}
@PostMapping("/leave-feedbacks")
@ResponseStatus(HttpStatus.CREATED)
public FeedbackResponse leaveFeedback(@RequestBody FeedbackRequest feedbackRequest) {
return feedbackService.saveFeedback(feedbackRequest);
}
}
build.gradle(feedback-service)
buildscript {
ext {
springCloudVersion = "2023.0.1"
queryDslVersion = '5.1.0'
mapStructVersion = '1.5.5.Final'
springCloudVersion = '2023.0.1'
}
}
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.4'
id 'io.spring.dependency-management' version '1.1.4'
}
repositories {
mavenCentral()
}
group = 'org.sglnu'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '21'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
implementation 'org.flywaydb:flyway-core'
implementation "org.mapstruct:mapstruct:${mapStructVersion}"
implementation "com.querydsl:querydsl-core:${queryDslVersion}"
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapStructVersion}"
annotationProcessor(
"com.querydsl:querydsl-apt:${queryDslVersion}:jakarta",
"jakarta.persistence:jakarta.persistence-api:3.1.0"
)
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}
bootJar{
mainClass = 'org.sglnu.categoryservice.CategoryServiceApplication'
}
Problem: When I send GET request to get all feedbacks I get error java.lang.ClassNotFoundException: org.sglnu.feedbackservice.dto.QFeedbackResponse, but when I send GET request to get for example feedback with id=1 I get OK response(FeedbackResponse).
I don't know how to resolve it. AIs say that the problem is with annotation processing but nothing has changed. I used the same build.gradle in other microservices and everything was ok.
I don't know how to resolve it. AIs say that the problem is with annotation processing but nothing has changed. I used the same build.gradle in other microservices and everything was ok.
Upvotes: 0
Views: 27