问题标签 [micronaut-data]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2102 浏览

micronaut - Micronaut-data 使用 Micronaut-test 模拟 CrudRepository

我尝试为我的 API 控制器编写 UnitTest,它使用来自 micronaut-data-jpa 的 CrudRepository。我使用@MockBean 在我的控制器中模拟协作存储库。如果我运行测试,我会收到以下错误:

Message: No such method [findById(java.lang.Object) ] for bean [jens.repositories.ConnectionProfileRepository]

我从未使用过 Spock、Micronaut-Data 或 Micronaut-Test,仅从以下来源尝试过:

https://micronaut-projects.github.io/micronaut-test/latest/guide/index.html

控制器:

语言:Groovy 存储库

测试

如何使用当前设置进行管理以实现控制器中存储库的模拟?

0 投票
2 回答
3152 浏览

jpa - 使用 micronaut-data-hibernate-jpa 库连接到 jpa 时出错

我想将 JPA 用于 micronaut。为此,我正在使用io.micronaut.data:micronaut-data-hibernate-jpa:1.0.0.M1库。每当我运行我的应用程序并点击端点以获取数据时,我都会收到以下错误:

我尝试查找错误,但找不到。在此处附加我的文件。请帮忙。

构建.gradle

存储库:

服务:

控制器:

堆栈跟踪:

0 投票
1 回答
233 浏览

rx-java2 - Micronaut 数据 - 可分页或 Flowable.skip().limit()?

我想知道是否有人可以解释每种方法的差异和利弊。IE。对数据库、性能等的基础查询

  1. RxJava 方法
  1. 可分页方法
0 投票
1 回答
2142 浏览

java - 具有来自连接实体的属性的 Micronaut 数据 DTO 投影

我将 Micronaut Data 与 JPA 一起使用,并且有两个实体。第一个是Recipe

第二个是ParseErrorRecipe

现在我想在 API 中为 DTO 提供ParseError属性而不是整个Recipe实体,因为它包含在这种情况下不需要的 ManyToOne 和 OneToMany 关系。所以我为此创建了投影DTO:

并将listAll()方法添加到ParseErrorRepository

但似乎 Micronaut Data 无法从嵌套实体中投影属性,或者我错过了 DTO 或存储库方法中的某些内容:

ParseErrorRepository.java:22:错误:无法实现存储库方法:ParseErrorRepository.listAll()。实体中不存在属性 recipeId:ParseError

我还尝试创建RecipeDto

并相应更新ParseErrorDto

再次没有成功:

ParseErrorRepository.java:22:错误:无法实现存储库方法:ParseErrorRepository.listAll()。[RecipeDto] 类型的属性 [recipe] 与实体中声明的等效属性不兼容:ParseError

Micronaut Data 是否能够通过 DTO 投影处理此用例?如果没有,那么还有另一种方法如何在 Micronaut Data 中解决它?

0 投票
1 回答
567 浏览

oracle - 将 micronaut-data 与 JDBC 一起使用时如何获取 DB 序列值

我在我的应用程序中使用带有 JDBC 的 micronaut-data(没有休眠) 我需要使用 Oracle DB 序列生成我的主键值

根据他们的官方文档(https://micronaut-projects.github.io/micronaut-data/1.0.x/guide/#jdbcSection:9.1.4.1 SQL Annotations

仅支持部分 JPA 注释,我没有在列表中找到 @GeneratedValue 和 @SequenceGenerator(所以不确定这些是否支持)

此外,医生说,

第 9.1.4.2 节 ID 生成 如果您希望使用序列作为 ID,您应该调用生成序列值的 SQL,并在调用 save() 之前分配它。

那么,查询 Oracle 数据库以获取序列值的最佳方法是什么?(因为与 JPA 不同,这里没有任何会话/实体管理器)。

已经尝试使用 JPA 注释生成序列:

@GeneratedValue 和 @SequenceGenerator

还使用,

@GenerateValue 存在于 micronaut 数据库中 (io.micronaut.data.annotation.GeneratedValue)

示例代码:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ") @SequenceGenerator(sequenceName = "EMPLOYEE_ID_SEQ", allocationSize = 1, name = "ID_SEQ")
private Long employeeId;

上面的代码失败了:

引起:java.lang.NullPointerException:在 oracle.jdbc.driver.OraclePreparedStatement.setupDbaBindBuffers(OraclePreparedStatement.java:3194) 处为空

0 投票
1 回答
484 浏览

spock - 每次执行前 MicronautTest 数据源设置不干净

我有这个 micronaut 应用程序做一些基本的数据库查找,只是为了测试框架。我已经使用 flyway 数据库迁移设置了应用程序,在我的测试设置中运行了一个 h2 数据库(生产使用 postgresql)。这用于正确设置架构。

我的存储库是使用 jpa 的 Micronaut 数据创建的,所以如果不在完整的 micronaut 上下文中运行测试,我不知道如何创建它。

在我的测试中,我尝试在 setup 方法中插入一些数据,然后再执行一些 spock 测试。当设置运行一次时,我希望它从一个干净的数据源开始,以便下一次测试执行。由于数据将违反唯一约束,因此在运行第二个测试的设置中会出现 sql 错误而失败。这是我的代码:

我想我可以创建一个清理块,在其中执行删除语句,但我认为这是最后的手段,因为我希望数据源在每次测试运行之前都是干净的。

0 投票
3 回答
5154 浏览

micronaut - Micronaut 数据:没有为存储库配置支持 RepositoryOperations

当我尝试使用内存 h2 数据库和 Jpa 配置 micronaut-data 时,出现以下异常。
我一直在关注文档

我使用 maven 作为构建工具从命令行创建了项目。我有以下

而且我还添加了这样的注释处理器

我的 Entity 类和 Repository 类与指南中提到的完全一样。当我尝试使用存储库进行保存时,出现此异常

我已经调查过。这是完全不同的,它对我的​​问题没有帮助。

有趣的是,如果我改变 micronaut 数据注释过程的顺序或者我的意思是如果我这样放

我得到一个不同的例外。

任何指针都非常感谢。

0 投票
2 回答
272 浏览

java - 您是通过 http 直接传递 hibernate / jpa 实体对象还是有更好的选择?

首先,我想说我对这个 JPA / Hibernate 还很陌生,而且 micronaut 对我来说也是新的(我在 PHP、Python、“桌面 Java”、C++ 等方面有很多经验)。

当我通过 micronaut @Body 注释传递实体时,我无法摆脱我误解概念中的某些东西的感觉,因为它们是分离的,我必须使用em.merge(entity).

请考虑以下示例(缩短以仅显示重要部分):

我的实体.java:

MyController.java:

请注意,样本只是一起复制的,因此可能存在一些错误,但我认为这更多是关于选择正确方法的问题。

在我的研究过程中,到目前为止我看到的所有示例都是关于不分离的持久实体。有时我看到人们使用 DTO(属性级别的实体类的精确副本,但没有 jpa / hibernate 注释)。我认为这种方法也有一些味道,因为我必须构建一个具有完全相同属性的全新类。

如果没有将 dto 的属性转移到实体(调用 dto getter,调用实体 setter),我使用 DTO 不会有什么大问题。是否有一种“干净”的方法可以做到这一点,而无需手动传输每个属性(可能是一些基于反射的库或注释处理器)。然后我可以通过 dto id 从持久性上下文中加载一个实体,然后更新我的实体字段并触发更新。

总之,我的问题是: - 直接传递实体导致实体被分离(例如,micronaut-data 包不能以这种方式进行更新) - 使用 DTO 最终会逐个复制属性,这非常冗长

那么通过 json 将对象发布到网络服务器并保存或更新它的正确方法是什么?

如果有什么不明白的,我很乐意澄清它!

0 投票
3 回答
551 浏览

micronaut - 如何使用 Micronaut Data JDBC 在存储库中创建简单的计数查询?

我正在尝试在 Micronaut Data JDBC 存储库中创建一个计数本机查询。我在用着:

我得到以下编译错误:

我该如何解决这个问题?

0 投票
1 回答
393 浏览

kotlin - 如何将 @Transient 与缺少支持字段的 Micronaut Data 和 Kotlin 属性一起使用?

我正在从 Spring Data JDBC 和 Java 迁移到 Micronaut Data JDBC 和 Kotlin,并且@Transient在没有支持字段的 Kotlin 属性上遇到了麻烦。

示例代码:

运行时,我收到来自 Postgres 的投诉:

嗯,看起来 Micronaut Data 想要序列化/反序列化继承的属性。所以我尝试@Transient了该属性,编译失败:

关于如何解决这个问题的建议?