问题标签 [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.
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 存储库
测试
如何使用当前设置进行管理以实现控制器中存储库的模拟?
jpa - 使用 micronaut-data-hibernate-jpa 库连接到 jpa 时出错
我想将 JPA 用于 micronaut。为此,我正在使用io.micronaut.data:micronaut-data-hibernate-jpa:1.0.0.M1
库。每当我运行我的应用程序并点击端点以获取数据时,我都会收到以下错误:
我尝试查找错误,但找不到。在此处附加我的文件。请帮忙。
构建.gradle
存储库:
服务:
控制器:
堆栈跟踪:
rx-java2 - Micronaut 数据 - 可分页或 Flowable.skip().limit()?
我想知道是否有人可以解释每种方法的差异和利弊。IE。对数据库、性能等的基础查询
- RxJava 方法
- 可分页方法
java - 具有来自连接实体的属性的 Micronaut 数据 DTO 投影
我将 Micronaut Data 与 JPA 一起使用,并且有两个实体。第一个是Recipe
:
第二个是ParseError
指Recipe
:
现在我想在 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 中解决它?
oracle - 将 micronaut-data 与 JDBC 一起使用时如何获取 DB 序列值
我在我的应用程序中使用带有 JDBC 的 micronaut-data(没有休眠) 我需要使用 Oracle DB 序列生成我的主键值
根据他们的官方文档(https://micronaut-projects.github.io/micronaut-data/1.0.x/guide/#jdbc)Section: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) 处为空
spock - 每次执行前 MicronautTest 数据源设置不干净
我有这个 micronaut 应用程序做一些基本的数据库查找,只是为了测试框架。我已经使用 flyway 数据库迁移设置了应用程序,在我的测试设置中运行了一个 h2 数据库(生产使用 postgresql)。这用于正确设置架构。
我的存储库是使用 jpa 的 Micronaut 数据创建的,所以如果不在完整的 micronaut 上下文中运行测试,我不知道如何创建它。
在我的测试中,我尝试在 setup 方法中插入一些数据,然后再执行一些 spock 测试。当设置运行一次时,我希望它从一个干净的数据源开始,以便下一次测试执行。由于数据将违反唯一约束,因此在运行第二个测试的设置中会出现 sql 错误而失败。这是我的代码:
我想我可以创建一个清理块,在其中执行删除语句,但我认为这是最后的手段,因为我希望数据源在每次测试运行之前都是干净的。
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 将对象发布到网络服务器并保存或更新它的正确方法是什么?
如果有什么不明白的,我很乐意澄清它!
micronaut - 如何使用 Micronaut Data JDBC 在存储库中创建简单的计数查询?
我正在尝试在 Micronaut Data JDBC 存储库中创建一个计数本机查询。我在用着:
我得到以下编译错误:
我该如何解决这个问题?
kotlin - 如何将 @Transient 与缺少支持字段的 Micronaut Data 和 Kotlin 属性一起使用?
我正在从 Spring Data JDBC 和 Java 迁移到 Micronaut Data JDBC 和 Kotlin,并且@Transient
在没有支持字段的 Kotlin 属性上遇到了麻烦。
示例代码:
在运行时,我收到来自 Postgres 的投诉:
嗯,看起来 Micronaut Data 想要序列化/反序列化继承的属性。所以我尝试@Transient
了该属性,编译失败:
关于如何解决这个问题的建议?