我正在创建一个小端点,但它对我不起作用。这非常简单,为此我使用 micronaut
我的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.autentia</groupId>
<artifactId>autentia</artifactId>
<version>0.1</version>
<packaging>${packaging}</packaging>
<parent>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-parent</artifactId>
<version>3.3.4</version>
</parent>
<properties>
<packaging>jar</packaging>
<jdk.version>11</jdk.version>
<release.version>11</release.version>
<micronaut.version>3.3.4</micronaut.version>
<exec.mainClass>com.autentia.Application</exec.mainClass>
<micronaut.runtime>netty</micronaut.runtime>
</properties>
<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-inject</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-validation</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micronaut.test</groupId>
<artifactId>micronaut-test-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-client</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-server-netty</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-jackson-databind</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-runtime</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-hibernate-jpa</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.micronaut.build</groupId>
<artifactId>micronaut-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- Uncomment to enable incremental compilation -->
<!-- <useIncrementalCompilation>false</useIncrementalCompilation> -->
<annotationProcessorPaths combine.children="append">
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</path>
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-validation</artifactId>
<version>${micronaut.version}</version>
</path>
<path>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-processor</artifactId>
<version>3.2.2</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Amicronaut.processing.group=com.autentia</arg>
<arg>-Amicronaut.processing.module=autentia</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
我的存储库:
import com.prueba.entity.Person;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
@Repository
public interface PersonRepository extends CrudRepository<Person, Long> {
}
我的实体:
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter
@Setter
public class Person {
@Id
@GeneratedValue
private Long Id;
private String name;
private String surname;
}
最后报错了
java:无法实现存储库方法:PersonRepository.findById(Object id)。无法在不存在的属性上查询实体 [Person]:Id
我可能做错了什么?谢谢
最佳答案
理想情况下,您应该下载或创建 micronaut 项目并选择 Lombok 依赖项,这样就不会遇到此问题。
但是如果您想稍后在项目中添加 lombok,这里是指南。
您需要做的就是以正确的顺序添加依赖项。 注释处理器的顺序似乎在这里发挥着重要作用。 如下所述使用这些依赖项。
注意:这个答案基于 gradle,但这个概念也应该适用于 Maven
第 1 步:使用下面的 lombok 注释处理器作为依赖项中的第一件事:
annotationProcessor("org.projectlombok:lombok")
第 2 步:然后在注释处理器之后,使用 lombok 编译时依赖项:
compileOnly("org.projectlombok:lombok")
第 3 步:然后您可以编写其余的依赖项:
implementation("io.micronaut.data:micronaut-data-hibernate-jpa")
runtimeOnly("ch.qos.logback:logback-classic")
...
...
build.gradle(依赖项部分)
dependencies {
/* Step 1 */
annotationProcessor("org.projectlombok:lombok")
annotationProcessor("io.micronaut:micronaut-http-validation")
annotationProcessor("io.micronaut.data:micronaut-data-processor")
annotationProcessor("io.micronaut.openapi:micronaut-openapi")
/* Step 2 */
compileOnly("org.projectlombok:lombok")
/* Step 3 */
implementation("io.micronaut:micronaut-http-client")
implementation("io.micronaut:micronaut-jackson-databind")
implementation("io.micronaut.flyway:micronaut-flyway")
implementation("io.micronaut.oraclecloud:micronaut-oraclecloud-atp")
implementation("io.micronaut.oraclecloud:micronaut-oraclecloud-sdk")
implementation("io.micronaut.sql:micronaut-jdbc-hikari")
implementation("jakarta.annotation:jakarta.annotation-api")
implementation("io.micronaut.data:micronaut-data-hibernate-jpa")
implementation("org.apache.commons:commons-lang3:3.12.0")
implementation("io.swagger.core.v3:swagger-annotations")
runtimeOnly("ch.qos.logback:logback-classic")
}
关于micronaut - java : Unable to implement Repository method: PersonRepository. 保存(对象实体)。找不到可能的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71416952/