问题标签 [immutables-library]
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.
java - 可选,@NotBlank 给出错误,而 @Size 不给出使用 Javax 验证的不可变类
我有以下 POJO:
我正在使用 javax 验证来验证 ABC 类的对象,如下所示:
现在,当我尝试使用 ABC 的这个验证器函数对象进行验证时,我看到了一个奇怪的问题:
使用 abc 对象,如果未通过测试,即使它是可选的,但未通过 testSize 工作正常,它也会返回违规。
据我说,使用 Optional,它们都应该工作。不是吗?
Immutables 或 javax 验证是否存在问题?请帮忙。
java - 如何在 Java gradle 项目中禁用生成代码中的警告
我想要一个 gradle 项目,它不会对我编写的任何代码产生编译器警告。我还想使用Immutables 库来生成我的一些类。目前我还没有找到禁用生成代码警告的方法。
目前我有一个gradle.properties
文件,其中包括:
在我的模块中build.gradle
,我有以下相关部分:
当我尝试编译时,我得到如下所示的输出:
是否有任何编译器设置可用于排除生成代码的警告?我知道Error Prone 编译器允许您排除文件,options.errorprone.disableWarningsInGeneratedCode = true
但我在普通的 gradle 编译选项中看不到类似的东西。
java - 如何在不可变生成类中禁用@Generated 注释?
我正在使用 Immutables-value 来定义我的 POJO。当它生成 Immutable* 类时,它的顶部有 @Generated 注释。有什么办法可以禁用它吗?
这里提到它可以通过以下方式禁用:Style#allowedClasspathAnnotations()
我在 POJO 接口上使用它,如下所示:
但是我仍然在生成的类之上获得了 @Generated 注释。知道我该怎么做吗?
java - 无法在 vs 代码中加载注释处理器工厂
我正在尝试将immutables
库与 vscode(和 Gradle)一起使用。
我采取的步骤:
- 确认
jar
存在 - 确保
GRADLE_USER_HOME
变量存在(最初不存在) - 设置“java.import.gradle.home”vscode 设置(GRADLE_HOME)
- 确保项目使用
gradle build
我一直挂在环境变量上。GRADLE_USER_HOME
与GRADLE_HOME
。
我在 MacOS 上,我没有使用 安装 vscode brew
,但实际上是从 vscode 网站下载了该应用程序。
Unable to load annotation processor factory 'GRADLE_USER_HOME/caches/modules-2/files-2.1/org.immutables/value/2.7.3/91d271437be1e14438a2da6c5c3e9f8db061a7b9/value-2.7.3.jar' for project
java - How to autogenerate a Unique ID from Immutables Criteria Library?
The advice given on Immutables site is to switch to the new Immutables-Criteria functionality. In this sense I try to convert my project so that instead of Immutables-MongoDB it uses the Immutables-Criteria .
Immutables-MongoDB provides the Id.generate()
method as a Default way to auto-generate unique id for an object. There is an example here.
However the equivalent tag does not have any method similar or equivalent to the generate()
method. Neither such a method related to ID could be found in the criteria API.
In the project that needs to be converted Id.generate()
is used prior to inserting/coming.
Is there any way I can achieve the effect of calling Id.generate()
from the new Immutables-Criteria API?
I would prefer to know what is the preferred Immutables-Criteria based way. One solution could be to auto-generate a GUID but I would like to use the recommended approach (if there is one) so I can be more compatible with future updates.
java - org.immutables 和休眠:AnnotationException:没有为实体指定标识符
我一直在尝试使用使用org.immutables
as hibernate生成的类@Entity
。但是,我不断得到Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.service.AbstractUserEntity
我的实体定义
库版本
有没有人遇到过这个?或者有人可以指出我错过了什么?
java - 空集合转换为空
默认情况下,如果未提供任何集合,immutables.io 将创建空集合。
以下将使用空集合创建对象:
但是,如果该值显式设置为 null,则不可变对象将抛出 NPE。
这可以通过允许使用@Nullable
. 这将导致集合为空。我希望这个案例能够优雅地处理 null 并将其转换为空集合。
java - 在响应中添加新字段时的向后兼容性
我正在为我的请求/响应类使用 Java Immutables,它看起来像这样:
现在我需要在我的请求中添加一个新字段:
据我了解,这不应该破坏兼容性,旧客户端应该简单地忽略新字段,但是当我将旧版本与新请求一起使用时,它会失败:
我javax.ws.rs.client.Invocation.Builder
用来发布我的请求。
这里有什么帮助吗?
java - 使用 Mapstruct 将实体转换为不可变模型对象时单元测试失败
我正在使用 MapStruct 将数据库实体转换为不可变模型对象。所以 Immutable 对象没有设置器,但 Mapstruct 在映射对象时需要设置器。所以我使用不可变对象构建器创建了一个显式构建器来提供给 Mapstruct。以下是代码片段:
以下代码由 Mapstruct 生成:
我能够将实体转换为不可变模型对象,但单元测试为此失败。CarMapper.INSTANCE.toModel(carEntity).build();
在单元测试中调用时,它在 CarMapperImpl 类的代码下方抛出 NPE
有谁知道这里出了什么问题?
java - 无法将 Jackson 与 Immutables 一起使用反序列化:unrecog
我有以下格式的 JSON:
我正在尝试使用以下类对其进行反序列化:
但它会引发以下错误:unrecognized field "FileStatus", not marked as ignorable (0 known properties )
但是,如果我将 Json 读取为字符串然后使用JSONObject obj = new JSONObject(source);
它就可以完美地工作。
我哪里错了?