gpt4 book ai didi

java - Micronaut 无法实现存储库方法 : Repository. 更新(对象实体)。找不到可能的实现

转载 作者:行者123 更新时间:2023-12-04 15:33:10 26 4
gpt4 key购买 nike

这是我的堆栈:
- Micronaut 1.3.2
- Java 8
- eclipse STS 4

Pom.xml 摘录:

<dependency>
<groupId>io.micronaut.configuration</groupId>
<artifactId>micronaut-jdbc-hikari</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-hibernate-jpa</artifactId>
</dependency>
<dependency>
<groupId>io.micronaut.configuration</groupId>
<artifactId>micronaut-hibernate-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<path>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-processor</artifactId>
<version>1.0.0.M1</version>
</path>


我的存储库:
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;

@Repository
public interface UsuarioRepository extends CrudRepository<UsuarioModel, Long> { }

我的服务:
private UsuarioDTO atualizar(UsuarioDTO usuario) {
UsuarioModel modelo = new UsuarioModel();
modelo.setIdade(usuario.idade);
modelo.setNick(usuario.nick);
modelo.setNome(usuario.nome);
modelo.setPassword(usuario.password);
this.usuarioRepository.update(modelo);
return usuario;
}

应用程序.yml:
micronaut:
application:
name: micronaut-chatroom
server:
cors:
enabled: true
datasources:
default:
url: jdbc:h2:mem:devDb
driverClassName: org.h2.Driver
username: sa
password: ''
schema-generate: CREATE_DROP
dialect: H2
jpa:
default:
entity-scan:
packages: 'com.cr.model'


当我在我的 Micronaut 项目上运行 Install maven 命令时,我收到错误消息:

[错误] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project micronaut-chatroom: Compilation failure
[错误] 无法实现 Repository 方法:UsuarioRepository.update(Object entity)。找不到可能的实现。

有人经历过吗?

提前致谢!

编辑

这是我的 UsuarioModel 类
@Entity(name = "Usuario")
@Table(name = "usuario")
public class UsuarioModel implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7468837154917949190L;
@Id
@GeneratedValue
private Long id;
private String nome;
private String nick;
private String idade;
private String password;

@OneToMany
private List<MensagemModel> mensagens;

//Getter/Setters ommited

}

还有我的 MensagemModel 类:
@Entity(name = "Mensagem")
@Table(name = "mensagem")
public class MensagemModel implements Serializable {
/**
*
*/
private static final long serialVersionUID = 7634793331670289187L;
@Id
@GeneratedValue
private Long id;
@CreationTimestamp
private LocalDateTime data;
private String conteudo;

@ManyToOne
@JoinColumn(name = "usuario_id")
private UsuarioModel usuario;
//Getter/Setter ommited
}

最佳答案

编辑:
@Id 有 2 个可能的来源micronaut 中的装饰器:

  • “原生”注释包:io.micronaut.data.annotation
  • jpa 持久性包可用为:jakarta.persistence-api maven 中的依赖

  • 当你用 @Entity 装饰类时我想您正在使用后一组装饰器。或至少是 2 个来源的混合。

    作为基本的调试步骤,您可以尝试删除对 j​​avax.persistance 的任何引用并仅使用 native 装饰器。因此,例如,不要使用 @Entity而是 @MappedEntity等等。

    只需注释掉来自 javax.persistence.* 的任何导入并尝试使用 native io.micronaut.data.annotation* .

    如果问题出在注释过程的某些扭曲上,我希望这会更清楚。

    旧垃圾已被删除 - 是否与 Kotlin 相关

    关于java - Micronaut 无法实现存储库方法 : Repository. 更新(对象实体)。找不到可能的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688225/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com