问题标签 [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.

0 投票
2 回答
2122 浏览

java - 可选,@NotBlank 给出错误,而 @Size 不给出使用 Javax 验证的不可变类

我有以下 POJO:

我正在使用 javax 验证来验证 ABC 类的对象,如下所示:

现在,当我尝试使用 ABC 的这个验证器函数对象进行验证时,我看到了一个奇怪的问题:

使用 abc 对象,如果未通过测试,即使它是可选的,但未通过 testSize 工作正常,它也会返回违规。

据我说,使用 Optional,它们都应该工作。不是吗?

Immutables 或 javax 验证是否存在问题?请帮忙。

0 投票
0 回答
675 浏览

java - 如何在 Java gradle 项目中禁用生成代码中的警告

我想要一个 gradle 项目,它不会对我编写的任何代码产生编译器警告。我还想使用Immutables 库来生成我的一些类。目前我还没有找到禁用生成代码警告的方法。

目前我有一个gradle.properties文件,其中包括:

在我的模块中build.gradle,我有以下相关部分:

当我尝试编译时,我得到如下所示的输出:

是否有任何编译器设置可用于排除生成代码的警告?我知道Error Prone 编译器允许您排除文件,options.errorprone.disableWarningsInGeneratedCode = true但我在普通的 gradle 编译选项中看不到类似的东西。

0 投票
1 回答
275 浏览

java - 如何在不可变生成类中禁用@Generated 注释?

我正在使用 Immutables-value 来定义我的 POJO。当它生成 Immutable* 类时,它的顶部有 @Generated 注释。有什么办法可以禁用它吗?

我检查了他们的代码库: https ://github.com/immutables/immutables/blob/master/value-annotations/src/org/immutables/value/Generated.java#L22-L27

这里提到它可以通过以下方式禁用:Style#allowedClasspathAnnotations()

我在 POJO 接口上使用它,如下所示:

但是我仍然在生成的类之上获得了 @Generated 注释。知道我该怎么做吗?

0 投票
1 回答
1457 浏览

java - 无法在 vs 代码中加载注释处理器工厂

我正在尝试将immutables库与 vscode(和 Gradle)一起使用。

我采取的步骤:

  1. 确认jar存在
  2. 确保GRADLE_USER_HOME变量存在(最初不存在)
  3. 设置“java.import.gradle.home”vscode 设置(GRADLE_HOME)
  4. 确保项目使用gradle build

我一直挂在环境变量上。GRADLE_USER_HOMEGRADLE_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

0 投票
1 回答
111 浏览

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.

0 投票
0 回答
78 浏览

java - org.immutables 和休眠:AnnotationException:没有为实体指定标识符

我一直在尝试使用使用org.immutablesas hibernate生成的类@Entity。但是,我不断得到Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.service.AbstractUserEntity

我的实体定义


库版本


有没有人遇到过这个?或者有人可以指出我错过了什么?

0 投票
1 回答
301 浏览

java - 空集合转换为空

默认情况下,如果未提供任何集合,immutables.io 将创建空集合。

以下将使用空集合创建对象:

但是,如果该值显式设置为 null,则不可变对象将抛出 NPE。

这可以通过允许使用@Nullable. 这将导致集合为空。我希望这个案例能够优雅地处理 null 并将其转换为空集合。

0 投票
1 回答
371 浏览

java - 在响应中添加新字段时的向后兼容性

我正在为我的请求/响应类使用 Java Immutables,它看起来像这样:

现在我需要在我的请求中添加一个新字段:

据我了解,这不应该破坏兼容性,旧客户端应该简单地忽略新字段,但是当我将旧版本与新请求一起使用时,它会失败:

javax.ws.rs.client.Invocation.Builder用来发布我的请求。

这里有什么帮助吗?

0 投票
2 回答
124 浏览

java - 使用 Mapstruct 将实体转换为不可变模型对象时单元测试失败

我正在使用 MapStruct 将数据库实体转换为不可变模型对象。所以 Immutable 对象没有设置器,但 Mapstruct 在映射对象时需要设置器。所以我使用不可变对象构建器创建了一个显式构建器来提供给 Mapstruct。以下是代码片段:

以下代码由 Mapstruct 生成:

我能够将实体转换为不可变模型对象,但单元测试为此失败。CarMapper.INSTANCE.toModel(carEntity).build();在单元测试中调用时,它在 CarMapperImpl 类的代码下方抛出 NPE

有谁知道这里出了什么问题?

0 投票
1 回答
107 浏览

java - 无法将 Jackson 与 Immutables 一起使用反序列化:unrecog

我有以下格式的 JSON:

我正在尝试使用以下类对其进行反序列化:

但它会引发以下错误:unrecognized field "FileStatus", not marked as ignorable (0 known properties )

但是,如果我将 Json 读取为字符串然后使用JSONObject obj = new JSONObject(source);它就可以完美地工作。

我哪里错了?